同学帮忙给我写的一份
#pragma once //(批注)用这个保证不会重包含 //(批注)在这里写包含你需要用到的库,用到的越少越好,用到多个库时按字典顺序排列 #include <iostream> //(批注)在自己写的库中,尽量(尽最大可能)不用using nsmespace,一定不要用 //(批注)每个函数上面可以写注释,这是我写注释的规范(不是标准规范) //(接批注)我也不常写注释,我自己调用的话一般只标注功能,但是给别人写的库一定要有完整注释,特别是头文件中 /* 将data输出((批注)函数的功能) @data:要输出的数据((批注)函数的参数,顺序从左到右来) @return:无((批注)函数的返回值) */ void Print(int data); /* 将两个数相加 @a:左操作数 @b:右操作数 @return:相加的结果 */ int Add(int a,int b); /*(批注)函数声明可以只写类型,但是如果参数较多,最好写上,不然看着乱,对一看就知道是干啥的参数不用写 将两个数相加 @int:左操作数 @int:右操作数 @overflow:检测是否溢出,若传入null则不检测 否则将溢出结果写入其中 @return:相加的结果 */ int Add(int ,int ,bool *overflow);
1 #include "My.h" 2 #include "My.h" //(批注)多次包含应该保证一定不会冲突 3 using namespace std;//(批注)可以在这里加命名空间引用,尽量减少使用范围 4 5 //(批注)在源文件中声明并定义的函数,只有本文件会用到,别人包含头文件也无法使用(头文件中没声明) 6 void PrintMsg(int x,int y) 7 { 8 bool overflow; 9 cout<<Add(x,y,&overflow)<<" 溢出:"<<overflow<<endl; 10 } 11 12 int main() 13 { 14 PrintMsg(123,456); 15 PrintMsg(2147483647,2147483647); 16 PrintMsg(-2147483647,-2147483647); 17 PrintMsg(2147483647,-2147483647); 18 }
#include "My.h" //(批注)函数间空格 void Print(int data) { std::cout<<data; } int Add(int a,int b) { return a+b; } int Add(int x,int y,bool *overflow) { if(overflow==nullptr)//(批注)特殊情况可以写到开头 return Add(x,y); int ret=x+y;//(批注)用到的临时变量尽量起有意义的名字,比如ret是return的缩写,不要写a,b,c,z之类的 //(接批注)参数这种结合函数功能一看就知道是干啥的,起名就不需要复杂了,写成x,y还更好理解,overflow是溢出 if((x>>(sizeof(int)-1))^(y>>(sizeof(int)-1)))//比较符号位,若不同,则不会溢出 *overflow=false;//(批注)判断,循环,只有一条语句时,不要花括号,但是要缩进 else if(x>0&&ret<0||x<0&&ret>0)//若操作数符号位相同,计算结果符号位与操作数不同 *overflow=true; return ret; }