Ori*_*ski 9 coding-style conventions function
您如何看待一线功能?这不好吗?我能想到的一个优点是它使代码更加全面(如果你为它选择一个好名字).例如:
void addint(Set *S, int n)
{
(*S)[n/CHAR_SIZE] |= (unsigned char) pow(2, (CHAR_SIZE - 1) - (n % CHAR_SIZE));
}
Run Code Online (Sandbox Code Playgroud)
我能想到的一个缺点是它会减慢代码的速度(将参数推送到堆栈,跳转到函数,弹出参数,执行操作,跳回代码 - 只有一行?)
将这些行放在函数中还是只将它们放入代码中更好?即使我们只使用它们一次?
顺便说一句,我还没有发现任何问题,所以请原谅我以前曾经问过这样的问题.
Wed*_*dge 25
不要害怕单行功能!
许多程序员似乎都有关于1行功能的心理障碍,你不应该这样做.
如果它使代码更清晰,更清晰,则将该行提取到函数中.
性能可能不会受到影响.
在过去十年(或许可能更进一步)制作的任何体面编译器都将自动内联简单的1行函数.此外,1行C可轻松对应多行机器代码.您不应该假设即使在理论情况下,您会产生函数调用的全部开销,这与您的"一条小线"相比,这种开销很大.更重要的是,您的应用程序的整体性能.
抽象导致更好的设计.(即使是单行代码)
函数是抽象的,组件化的代码的主要构建块,它们不应该被忽略.如果在函数调用后面封装一行代码会使代码更具可读性,那就去做吧.即使在函数被调用一次的情况下也是如此.如果您发现对一行特定代码进行注释很重要,那么这是一个很好的代码味道,将代码移动到一个命名良好的函数可能会有所帮助.
当然,这个代码今天可能只有1行,但有多少种不同的方法可以执行相同的功能呢?在函数内部封装代码可以更容易地查看可用的所有设计选项.也许你的1行代码扩展为对web服务的调用,也许它变成了数据库查询,也许它变得可配置(例如,使用策略模式),也许你想切换到缓存由你的1-计算的值线.当您将1行代码解压缩到自己的函数中时,所有这些选项都更容易实现,并且更容易想到.
也许你的1行应该更多.
如果你有一大块代码,那么很容易将很多功能塞进一条线上,只是为了节省屏幕空间.将此代码迁移到函数时,可以减少这些压力,这可能会使您更倾向于将复杂的1-liner扩展为更简单的代码,从而占用多行(这可能会提高其可读性和可维护性).
我并不喜欢将所有类型的逻辑和功能捆绑在一条线上.您显示的示例是一个混乱,可以分解为几行,使用有意义的变量名称并执行一个接一个的操作.
在这本书的每一个问题中,我都强烈建议你看一下(买它,借用它,(不要)下载它(免费))这本书:罗伯特C.马丁 - 清洁代码.每个开发人员都应该看一本书.
它不会立刻让你成为一个好的编码器,它不会阻止你在将来编写丑陋的代码,但是当你编写丑陋的代码时它会让你意识到它.它将迫使您以更批判的眼光看待您的代码,并使您的代码像报纸一样可读.