开发项目的必要条件--规范代码

首先,最重要一点,编写代码时必须添加注释,即使是简洁的注释也是有用的
在程序员的社区中,流传着一句名言:“现在我写的这段代码只有我和上帝能看懂,过了一星期只有上帝才能看懂,再过一星期连上帝也看不懂”。这句话并非言过其实,你可以回顾几周前你所写的代码,尝试立即解释它的功能。我确信99.999%的人都做不到这一点(除非你是那0.001%的超人)。编写具有注释的代码也需要花费时间来理解,更不用说没有注释的代码了。

注释并不要求对每一行代码进行逐字的解释,而是要重点突出核心功能,简要说明此代码段的功能、其编写原因和实现方式。如下所示:

// 在Update函数中检查目标游戏物体是否存在,如果存在,则让UI物体跟随其移动。
private void Update()
{
    if (targetObject != null)
    {
        // 获取目标游戏物体的世界坐标
        Vector3 targetPosition = targetObject.position;

        // 将目标坐标从世界空间转换为Canvas空间
        Vector3 canvasPosition = Camera.main.WorldToViewportPoint(targetPosition);

        // 获取Canvas的Rect
        RectTransform canvasRect = GetComponentInParent<Canvas>().GetComponent<RectTransform>();

        // 将Canvas空间的坐标转换为UI物体的本地坐标
        Vector2 screenPosition = new Vector2(
            ((canvasPosition.x * canvasRect.sizeDelta.x) - (canvasRect.sizeDelta.x * 0.5f)),
            ((canvasPosition.y * canvasRect.sizeDelta.y) - (canvasRect.sizeDelta.y * 0.5f))
        );

        // 更新UI物体的位置
        uiRectTransform.anchoredPosition = screenPosition;
    }
}

此外,还需注意命名规范,一定要使用英文命名,切勿使用拼音或汉字。这并非对拼音和汉字的贬低,但据我所见,几乎所有的程序员都采用英文命名方式。使用拼音不仅可能产生歧义(你能分清楚“qiang枪”和“qiang墙”吗),而且会给其他协作者带来不必要的麻烦。
至于中文命名,虽然大多数编程语言支持中文命名,但在编译运行或打包时可能会出现错误,你也不想在查找和修复错误方面浪费时间吧。
这里的英文命名并不是用字母a,b,c,d随意命名,而是要对应其作用,如下列代码:

//标准命名
public class Zombie : MonoBehaviour
{
    protected Vector3 dir; 
    public Vector3 _dir = Vector3.left;
    public Animator animator;
    private Plant plant;
    private SpriteRenderer zombieImg;

    public int damageValue;//伤害值
    public float speed;//速度
    public int bloodVolume;//血量
    public float attackInterval;//攻击间隔
    protected float timer = 0;
    protected int currentBlood;//当前血量
    protected float _speed;
    protected string target = "Plant";//攻击目标

    protected bool isWalk=true;
    protected bool isDie=false;
   	//...
}

//随意命名
public class Zombie : MonoBehaviour
{
    protected Vector3 a;
    public Vector3 b = Vector3.left;
    public Animator c;
    private Plant d;
    private SpriteRenderer e;

    public int f;  // 伤害值
    public float g;  // 速度
    public int h;  // 血量
    public float i;  // 攻击间隔
    protected float j = 0;
    protected int k;  // 当前血量
    protected float l;
    protected string m = "Plant";  // 攻击目标

    protected bool n = true;
    protected bool o = false;
    // ...
}

随意命名即使写了注释也很难看懂。

个人推荐变量名采用小驼峰命名法(camelCase)蛇形命名法(snake_case),函数名、类名、接口(interface)、枚举类型、结构体则使用大驼峰命名法(PascalCase)
在命名时,如果发现名称过长,可以通过缩写单词来简化命名,但最好简化为大家熟知的单词。简化的单词在命名中的占比要尽量低,否则可能产生歧义。
例如:假设我们要表示 “coordinate”(坐标),但将其缩写为 “coord”。这个缩写是常见的,但也有其他词可能会以相似的方式进行缩写,例如 “coordinate” 和 “coordination” 都可以缩写为 “coord”。

// 坐标类
public class Coord { ... }

// 协调类
public class Coord { ... }

在这种情况下,“Coord” 可能会引起阅读者的混淆,不清楚是指坐标(coordinate)还是协调(coordination)。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值