锁定老帖子 主题:Ruby Quiz
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-04-14
charon 写道 举个例子,从可读性的角度来说,下面的代码(假设max为奇数,否则更加没法比)
int sum=0; for(int i=1;i<=max;i++);{ sum += i; } 肯定比 int sum = (1+max);/2 * max 要强。 当然,有时候为了效率,是需要牺牲可读性的。但是,是不是需要为了简洁而牺牲可读性呢? 初中1年级的数学书 写道 德国的“数学王子”高斯,在小学读书时,老师出了一道算术题:1+2+3+……+100=?,老师刚读完题目,高斯就在他的小黑板上写出了答案: 5050,其他同学还在一个数一个数的挨个相加呢。那么,高斯是用什么方法做得这么快呢?这就是今天要讲的等差数列的求和方法--倒序相加法……。 如果觉得第1种可读性好的人,一定是初中数学没有学好...... |
|
返回顶楼 | |
发表时间:2006-04-14
Readonly 写道 如果觉得第1种可读性好的人,一定是初中数学没有学好...... 兄弟,那个是小学三、四年级的事情吧。当然,如果一年级就开始背99表的话,估计二年级就能算这个了。 初中数学比这个深奥多了啊。 |
|
返回顶楼 | |
发表时间:2006-04-14
Readonly 写道 charon 写道 举个例子,从可读性的角度来说,下面的代码(假设max为奇数,否则更加没法比)
int sum=0; for(int i=1;i<=max;i++);{ sum += i; } 肯定比 int sum = (1+max);/2 * max 要强。 当然,有时候为了效率,是需要牺牲可读性的。但是,是不是需要为了简洁而牺牲可读性呢? 初中1年级的数学书 写道 德国的“数学王子”高斯,在小学读书时,老师出了一道算术题:1+2+3+……+100=?,老师刚读完题目,高斯就在他的小黑板上写出了答案: 5050,其他同学还在一个数一个数的挨个相加呢。那么,高斯是用什么方法做得这么快呢?这就是今天要讲的等差数列的求和方法--倒序相加法……。 如果觉得第1种可读性好的人,一定是初中数学没有学好...... 只不过举个例子,意思是说第一个直接表达计算过程,第二个转了1道弯,当然在这个特定的例子中,这个弯确实等于没转 换个例子吧 int sum = 0; for (i=0; i < max;i++); { sum += i * i; } sum = (int);(max*(max - 0.5);*(max - 1);/3);; |
|
返回顶楼 | |
发表时间:2006-04-15
charon 写道 应该说我们的最主要差异就在这里了,代码的编写者/评审者一般容易精通代码所使用的语言,但是阅读者很难说了。所以编写者的代码水平应当向预计的阅读者看齐。 或者说,最佳情况能够让菜鸟级的水平(刚入门的那种)看明白。这样,就可以让一个成本稍低的团队去维护一个成熟的分支代码库。 接手这样代码库的初学者比较可怜, 都学不到到东西. 而且编写者的智慧也在慢慢被钝化. |
|
返回顶楼 | |
发表时间:2006-04-15
goncha 写道 charon 写道 应该说我们的最主要差异就在这里了,代码的编写者/评审者一般容易精通代码所使用的语言,但是阅读者很难说了。所以编写者的代码水平应当向预计的阅读者看齐。 或者说,最佳情况能够让菜鸟级的水平(刚入门的那种)看明白。这样,就可以让一个成本稍低的团队去维护一个成熟的分支代码库。 接手这样代码库的初学者比较可怜, 都学不到到东西. 而且编写者的智慧也在慢慢被钝化. 兄弟,这个就是智慧啊。总不至于一开始就想学怎么祭起飞剑高来高去吧。而且,代码的智慧主要还是集中在方法间和类间交互的组织结构上的,局部方法的智慧本身就是简单化。 当然,如果能够保证团队成员的起点一致较高,那么简便在局部,对于代码的运用上可以有较宽松的规范(由此也有可能会简化前面提到的组织结构)。关键是有一个一致性的代码编写规范来把关于语言本身的隐含知识明确化并成为团队的共识,至于这个层次的高低,则完全由跟团队本身的因素和发展决定的。 只是如果从客户角度来看,因为客户不可能维护一个高素质的团队,所以代码的内涵层次还是菜鸟一点的好。当然,如果是那种高度可配置,一般改动不需要改代码的成品软件,另当别论。 |
|
返回顶楼 | |