自己总结的一些编写代码的常识

来源:互联网 发布:2017党费缴纳算法 编辑:程序博客网 时间:2024/05/16 10:49
为什么使用函数(为了便于提升软件开发效率和维护)
开发角度
1)软件开发效率:通过使用函数来代码复用,提高了软件开发效率
2)代码可读性提高:良好命名的函数能通过函数名了解该代码块的功能职责,比起代码块显而易见这样更容易理解。由于这个原因,有时只有一次使用的代码块也应该写成函数。
3)软件更易维护:函数内的代码修改,能够一次改动多处地方自动改动,便于根据需求改动功能或改变算法来提高效率。
客户角度
1)提升程序运行效率。如果函数所包含的代码块体积比较大时也提升了软件运行效率,如果代码块体积比较小智能的编译器也会根据情况选择是否内联


编写函数需要注意的地方
1)保证传入的参数正确,确保能应对垃圾输入和非法输入。根据情况处理,比如可以抛出异常。
    并写明pre,post。
2)如果函数有返回值,确认每条分支都有返回值
3)1.对类数据成员是否修改
     2.函数中使用哪些函数use
      
4)让函数功能单一。比如根据输入执行操作返回输出,这时一般不应再修改输入或执行其他功能。


如何阅读代码

顺序:类,类的对外接口方法,方法

先直观了解软件的各个功能
1)有哪些类类之间的相互关系,类之间的数据是如何传递的
2)类有哪些public方法
3)每个类的内部实现,包括数据成员和私有函数,以及函数间的调用关系
4)函数或者方法,功能,pre,post,use哪些function

部分算法函数阅读,特别是循环
先搞清楚执行了几次循环,循环内的自变量是什么,不变量是什么

递归注意事项:
1)保证递归能退出,一般在函数第一句就写判断递归退出的条件 2)递归在向前进  
比如以下为二叉查找树查找目标键的递归函数
SearchBST(binary_node *sub_root,const Record &target) const
{
     if (sub_root == NULL || sub_root->data == target)
          return sub_root;
     else if (sub_root->data < target)
          return SearchBST(sub_root->right,target);
     else
          return SearchBST(sub_root->left,target);
}

定义类:
私有数据成员
构造函数一般都提供默认构造函数。对单个参数的构造函数使用 C++ 关键字 explicit(如果构造函数只有一个参数可看成是一种隐式转换)
析构
若非需要,禁用拷贝和赋值
 
函数尽量限定为const,inline,参数尽量用const修饰(如const引用,const int)

类库源码阅读
构造、析构
复制、赋值
常用对外接口(pre,post,func)
客户端程序员使用注意事项

原创粉丝点击