函数

  短小:if语句、else语句、while语句等,其中的代码块应该只有一行;

     函数的缩进层级不该多于一层或两层;

  只做一件事:判断函数是否可以再拆分出一个函数;

  每个函数一个抽象层级:函数中的语句都要在同一抽象层级上;

             向下规则:每个函数后面都跟着位于下一抽象层级的函数;

  Switch语句单一权责原则,开放闭合原则

        将switch语句埋到抽象工厂底下;

  使用描述性的名称:描述函数做的事;长而具有描述性的名称比短而令人费解的名称好;

           命名方式保持一致;

  函数参数:尽量避免三参和多参函数,无参函数最为理想;

       不要向函数传入布尔值,可以将函数拆分为二:true和false时的函数;

       尽量利用一些机制将二元函数转换成一元函数;

       如果函数需要两个、三个或三个以上参数,就说明其中一些参数应该封装为类了;

  无副作用时序性耦合

       避免使用输出参数,如果函数必须要修改某种状态,就修改所属对象的状态;

  分隔指令与询问:函数要么做什么事,要么回答什么事;把指令和询问分隔开,防止混淆的发生;

  使用异常替代返回错误码:使用异常,错误处理代码就能从主路径代码中分离出来;

              抽离Try/Catch代码块:把try/catch代码块的主体部分抽离出来,另外形成函数;

              错误处理就是一件事,处理错误的函数不该做其他事;

  别重复自己:消除重复;面向对象编程将代码集中到基类,从而避免冗余;

  结构化编程:函数中的每个代码块都应该有一个入口、一个出口;每个函数只该有一个return语句,循环中不能有break或continue语句,没有goto语句;

        只要函数保持短小,偶尔出现的return、break或continue语句没有坏处;goto尽量避免使用;

posted @ 2018-08-27 17:22  xiao_jian  阅读(270)  评论(0)    收藏  举报