bas*_*ibe 8 initialization function code-size
很多 人都在争论功能大小.他们说一般来说功能应该很短.意见从15行到"大约一个屏幕"不等,现在大概是40-80行.
此外,功能应始终只执行一项任务.
但是,在我的代码中,有两种标准经常失败的函数:初始化函数.
例如,在音频应用中,必须设置音频硬件/ API,必须将音频数据转换为合适的格式,并且必须正确初始化对象状态.这显然是三个不同的任务,根据API,这可以很容易地超过50行.
具有init函数的东西是它们通常只调用一次,因此不需要重用任何组件.如果你认为大的初始化函数还可以,你还会将它们分解成几个较小的函数吗?
mea*_*gar 12
我仍然会按任务分解函数,然后从面向公众的初始化函数中调用每个低级函数:
void _init_hardware() { }
void _convert_format() { }
void _setup_state() { }
void initialize_audio() {
_init_hardware();
_convert_format();
_setup_state();
}
Run Code Online (Sandbox Code Playgroud)
编写简洁的函数既可以将错误和变更隔离开来,也可以保持可读性.如果你知道失败了_convert_format(),你可以更快地追踪导致错误的~40行.如果您提交仅触及一个函数的更改,则同样适用.
最后一点,我assert()经常使用,所以我可以"经常失败并提前失败",并且函数的开头是一些完整性检查断言的最佳位置.保持功能简短允许您根据更狭窄的职责更彻底地测试功能.很难对400行功能进行单元测试,这可以完成10种不同的功能.