理由:
一个函数一次只处理一个逻辑上相关的操作,更容易理解、测试、重用。
例子:
voidad_and_print()//bad{intx;cinx;//checkforerrorscoutx"\n";}这样的整块代码,需要特定输入,很难重用。相反,拆分成多个逻辑相关的函数,并参数化,更清晰,更可重用:
intad(istamis)//better{intx;isx;//checkforerrorsturnx;}voidprint(ostamos,intx){osx"\n";}这样,就可以根据需要组装函数:
voidad_and_print(){autox=ad(cin);print(cout,x);}如果需要,还可以进一步将ad()和print()的数据类型,输入输出机制,错误处理等参数化。
autoad=[](autoinput,autovalue)//better{inputvalue;//checkforerrors};autoprint(autooutput,constautovalue){outputvalue"\n";}强化:
遇到有多个输出参数的函数,看看可不可以用返回值,或者用tuple返回多个值。
看到不能一个屏幕显示的函数,考虑是否可以拆分成命名良好、规模小的子函数
看到7个以上参数的函数,考虑是否能优化
C++核心指南是由C++创始人BjarneStroustrup和ISO/ANSIC++标准委员会秘书HerbSutter领导开发的关于如何正确高效使用C++的在线文档。就像C++语言本身一样,这些指南是许多组织中许多人多年讨论和设计的结果。
kimim