代码简洁之道的笔记--2

上次说到了命名和注释;做好命名和注释能让代码看起来清爽易懂

函数

  • 短小 短小是函数的第一规则, 更短小是第二规则; if, else, while 语句其中的代码块应该只有一行; 函数代码行数建议: 不要超过二十行;每行建议150个字符左右;
  • 一个函数只应该做好一件事并且对应一个抽象层级 就是说: 一个函数的实现,最好只做一件事,两件事分两个函数来做; 在另一个函数调用抽象了一层的函数时,该函数最好不要再在下面写大段的代码;
  • 使用描述性的函数名,长而具有描述功能的函数名更能让人理解,一眼就能知道该函数的作用,比写一句注释来的简洁;
  • 函数参数的个数,最理想的参数数量是0,接下来是1,2,3;除非有足够的理由,否则不要使用三个以上的参数;三个以上的参数;其测试用例组合是非常庞大的;
  • 标识参数:如果入参中包含布尔类型的参数,就是等同于一个函数做两件事:
function initOrder(flag)
{
if(flag == true)
{
//normalInit
//...
}
if(flag == false)
{
//specialInit
//...
}
}

上述函数一个函数做两件事;
改进如下:

function initOrder(flag)
{
if(flag == true)
{
  this.normalInit();
}
if(flag == false)
{
  this.specialInit();
}
//or flag == true ? this.nomalInit():this.specialInit();
}

function normalInit()
{}

function specialInit()
{}

上面这种虽然也还是使用布尔类型作为入参,但它只做一件事:就是判断要做哪件事,然后调用相对应的函数;如果可以的话,该判断可以直接放在拿到flag的地方;

  • 分隔指令与询问:
    函数要么做什么,要么回答什么,两者不可兼得。函数应该修改某对象的状态或是返回该对象的相关信息,两样都干就容易混乱。
  • 使用异常替代返回错误码:
    错误处理代码能从主路径中分离出来,阅读的时候,可以直面主路径内容。
  • 别重复自己:
    重复可能是软件中一切邪恶的根源,要学会复用代码;许多原则和实践都是为控制与消除重复而创建;
  • 别返回null,也别传递null:
    除非特殊需要,别反悔null/undefined,也别传递null/undefined,因为一旦返回值存在null,就意味着每一个调用的地方都要判断、处理null。否则就容易出现不可预料的情况;
posted @   JackyZhi  阅读(40)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示