编写可读代码艺术笔记

变量如何命名

  • 变量名要具体,如匈牙利表示法,将变量含义与类型结合
  • 有单位的变量可在名字中添加变量。如:start_ms
  • 空泛名字的生命周期应较短,如tmp。
  • 循环迭代器中变量可与要索引的数组名结合,如:
  for (int ci = 0; ci < clubs.size(); ci++)
    for (int mi = 0; mi < clubs[ci].memebers.size(); mi++)
        for (int ui = 0; ui < users.size(); ui++)
            if(clubs[ci].memebers[mi] == users[ui])
                count<<"user"<<ui<<"is in club"<<endl;
  • 小的作用域使用短的名字
  • 命名极限用max min 避免limit,范围用first last
  • 布尔值变量:用is has can should 等词更明确。
  • 方法命名可表现出方法的计算代价,如getMean()更倾向于表示直接得到均值,computeMean()则说明调用该方面会有一定计算代价。

代码的审美

  • 基本三原则:1. 使用一致布局 2.相似代码看上去相似 3.相关代码行分组,形成代码块。
  • 重新安排换行保持一致和紧凑,方法来整理不规则的东西
  • 不要将所有方法归为一个代码块,应按照逻辑分组

该写什么样的注释

  • 注释不应用于解释不好的命名。
  • 几种标记:TODO(待完成) FIXME(已知无法运行的) HACK(对一个问题不得不的粗糙解决方案) XXX(存在重大问题)
  • 对代码可能产生的问题做解释
  • 常量务必加注释说明为什么为该值总结性注释用于长函数

控制流的易读

  • if else 语句先易后难
  • 嵌套变线性更好。

拆分超长表达式

  • 正向逻辑太复杂可考虑反向
  • 德摩根定理应用如: if(!(a && !b)) <=> if(!a || b)

变量与可读性

  • 减少无价值的临时变量
  • 缩小变量作用域如:javascript中变量总是用var关键字来定义。利用闭包创建私有变量eg:某个长期存在的变量只在某个函数中使用
    submitted = false;
    var submit_form = function (form_name) {
        if (submitted) {
            return;
        }
        ...
        submitted = true;
    };
    >>>
    var submit_form = (function (){
        var submitted = false;

        return function(form_name) {
            if (submitted) {
                return;
            }
            ...
            submitted = true;
        };
    })();

抽取不相关问题

  • 将可作为工具,辅助的代码块抽取为函数,便于测试及阅读

一次只做一件事

  • 函数功能 和数据格式处理之类分开。
  • 记一个小tip:javascript中||可以依次找到第一个‘真’值。避免冗余的if语句判定。如下代码段 1优于2
   var first_half, second_half;

   if(country === "USA") {
       first_half = town || city || "Middle-of-Nowhere";
       second_half =state || "USA";
   } else {
       first_half = town || city || state || "Middle-of-Nowhere";
       second_half = country || "Planey Earth";
   }
   return first_half + "," + second_half;
      var second_half = "Planet Earth";
      if(country) {
          second_half = country;
      }
      if (state && country === "USA") {
          second_half = state;
      }
      var first_half = "Middle-of-Nowhere";
      if (state && country !=="USA") {
          first_half = state;
      }
      if (city) {
          first_half = state;
      }
      if (town) {
          first_half = town;
      }
      return first_half + "," +second_half;

把想法变成代码

  • 用自然语言可描述代码要做什么
    例如:
    $is_admin = is_admin_request();
    if($document){
        if (!$is_admin && ($document['username'] != $_SESSION['username'])) {
            return not_authorized();
        } 
    }else {
        if (!$is_admin) {
            return not_authorized();
        }
    }

实际是进行授权有两种方式1.admin 2.拥有当前文档 否则无法授权。代码的更优写法为

    if(is_admin_request()) {
        //
    } elseif ($document &&($document['username'] == $_SESSION['username'])) {
        //
    } else {
        return not_authorized();
    }

少写代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值