zoukankan      html  css  js  c++  java
  • 优美的函数

    1.短小

          有时候我们会不知不觉就写了一段很长的代码,写的时候很清晰,等过了一段时间后,就会晕头转向。原因就是我们的函数在一个地方做了太多的事。我们应该尽量控制我们函数的行数和列数。一般来说,一个函数中的if,else,for,while等语句应该只包含一行代码,相当于将内容包装为一个函数,再调用这个函数。尽量保证函数的缩进层级不多于一层或两层。这样能使代码易于理解。

    2.函数只需要做好一件事

    这个理念我们应该都懂,但是有时候很难判断是不是做了一件事。一般来说我们可以通过看一个函数中是否还能拆分出一个函数,并且该函数不是单纯地重新诠释其实现。函数重新诠释就是指我们
    定义一个函数去包含原来函数的一些步骤,直接调用新的函数就行。

    3.每个函数一个抽象层级

    具体说来就是,每个函数执行的任务的抽象层级是相同的。比如,我们上班时刻去医院看病。主线任务是请假->坐车到医院->找医生看病。请假包含向leader申请,同意后写请假条,不同意就改天。
    坐车到医院,包含查看地图路线,选择交通工具,如果坐公交就选择坐哪几路,如果自驾就要考虑堵车情况和到了之后的停车位。找医生看病,包含挂号,排队等待,看病,等结果。这里面就包含了很多层次。

    4.函数命名要有描述性,不怕长,绝对不能短到无法理解

    5.函数参数不要多

    最好一个参数,最多两个参数。参数多了,自己使用起来不好理解,容易导致混乱;同时对于测试也是麻烦,多个参数对于测试来说是噩梦,需要遍历所有可能的参数情况。

    • 一个参数:单个参数,我们一般可能使用该参数做判断;或者对该参数做操作,然后将转换结果返回。
    • 两、三个参数:两个、三个参数肯定没有一个参数清晰。在使用过程中,我们会遇到很多问题。两个参数的位置容易搞混;两个参数可能没有任何联系,对于参数理解有点困难。处理这个问题有很多方法,一是将多个参数构造为一个对象,这样我们每次只用传递一个对象,减少了参数个数;二是,将两个参数中的一个定义为成员变量,这样我们就可以直接使用,或者将方法定义在参数对象
      的类中;三是,使用变长参数列表。
    • 函数名称中也可以掺入参数的名字,这样更好的理解函数的意图。例如:isAEqualsB(a, b)

    6.函数中要分割指令和询问语句

    例如:不要出现又判断又设置的操作。set(A,B)本来是设置A为B,如果里面加入了if判断A是否为空,这个方法就不纯洁了,需要将这两个操作分开。

    7.函数处理错误要注意要使用异常,不使用错误码

    使用错误码的确定是,我们必须在主代码中处理错误码,如果抛出异常,我们可以使用try/catch包裹主代码,处理异常,同时try/catch应该保证纯洁,不要包含太多的代码。

    8.函数避免重复

    重复是导致很多问题的根源,要学会整合抽象,提取相同部分,这样不仅使得代码不再臃肿,而且会利于后期的维护。

     

    如何写好的函数?

    谁都不是神,也没有达到下手就能按规范写出好代码的要求。如何写出好函数呢?
    1. 首先,要把功能实现,确保功能正确无误;

    2. 之后,审查命名是否符合规范;

    3. 再看函数入参是否符合规范,是否需要构造对象,修改结构;

    4. 再看函数是否是否只做了一件事,如果函数做了很多事就需要分解函数,重新诠释函数;

    5. 然后看函数中是否有和其他函数一样的步骤,如果有就可以抽取相同部分,消除重复。

    6. 最后打磨完后,在严密测试,确保优化后函数功能正常。

  • 相关阅读:
    C#磁吸屏幕窗体类库
    准备
    我写的诗
    How to turn off a laptop keyboard
    How to tell which commit a tag points to in Git?
    Why should I care about lightweight vs. annotated tags?
    How to get rid of “would clobber existing tag”
    Facebook, Google and Twitter threaten to leave Hong Kong over privacy law changes
    The need for legislative reform on secrecy orders
    Can a foreign key be NULL and/or duplicate?
  • 原文地址:https://www.cnblogs.com/glsy/p/8399376.html
Copyright © 2011-2022 走看看