良好的布局与风格
2016-04-30 00:23
204 查看
良好的布局和风格,是为了展现代码的逻辑结构,有利于代码的可读性,并且能让代码易于维护。
1.但不必为了追求美观而牺牲可读性和易维护性,如下可能不易维护
尽管这种缩进看上去很漂亮,但变量的名称改变,变量score变为newscore,要维持以等号对齐就会很麻烦。
或将程序移往其他不同缩进级别的位置,也不好维护。
2.关于使用括号,要么使它成为控制结构的一部分,要么视为控制结构下的语句。如下可能扩大了程序逻辑结构的复杂度:
有些人会做成这样----
for (n=10;n>1;n--)
{
s = s + 1 / ( float ) n ;
printf ("%6.4f\n",s) ;
}
或者
for (n=10;n>1;n--)
{
s = s + 1 / ( float ) n ;
printf ("%6.4f\n",s) ;
}
前者看起来不错,但不能清晰显示出代码的逻辑结构,{与for对齐说明并列于控制结构,而其实要么让{成为控制结构一部分,要么让他从属于控制结构都是比较好的。
后者for循环里面内容缩进了两次,这个例子风格虽然好看,人们对缩进一次和缩进两次的理解并无区别,但这种风格不能呢个准确给出程序的逻辑结构,看上去像是从属于'{',(如果'{'前有一条语句,其实这条语句与括号内语句是并列的),而且直观上看模样更复杂,如下图前者更复杂
如果语句有三层嵌套,那么两次缩进就会使代码有六级缩进,导致布局看起来比实际代码复杂多了,将{}与里面语句作为一整块缩进,并将其间语句对齐更好一点。
建议做成这样-------
for (n=10;n>1;n--){
s = s + 1 / ( float ) n ;
printf ("%6.4f\n",s) ;
}
关于这种情况可能会丢括号,不宜检查{的配对,如果你习惯了括号成为控制结构的一部分,就不会丢掉的,
如下图,A与B是控制结构的一整体,C与D从属于控制结构,一目了然
或者大家都习惯的这样:
for (n=10;n>1;n--)
{
s = s + 1 / ( float ) n ;
printf ("%6.4f\n",s) ;
}
1.但不必为了追求美观而牺牲可读性和易维护性,如下可能不易维护
尽管这种缩进看上去很漂亮,但变量的名称改变,变量score变为newscore,要维持以等号对齐就会很麻烦。
或将程序移往其他不同缩进级别的位置,也不好维护。
2.关于使用括号,要么使它成为控制结构的一部分,要么视为控制结构下的语句。如下可能扩大了程序逻辑结构的复杂度:
有些人会做成这样----
for (n=10;n>1;n--)
{
s = s + 1 / ( float ) n ;
printf ("%6.4f\n",s) ;
}
或者
for (n=10;n>1;n--)
{
s = s + 1 / ( float ) n ;
printf ("%6.4f\n",s) ;
}
前者看起来不错,但不能清晰显示出代码的逻辑结构,{与for对齐说明并列于控制结构,而其实要么让{成为控制结构一部分,要么让他从属于控制结构都是比较好的。
后者for循环里面内容缩进了两次,这个例子风格虽然好看,人们对缩进一次和缩进两次的理解并无区别,但这种风格不能呢个准确给出程序的逻辑结构,看上去像是从属于'{',(如果'{'前有一条语句,其实这条语句与括号内语句是并列的),而且直观上看模样更复杂,如下图前者更复杂
如果语句有三层嵌套,那么两次缩进就会使代码有六级缩进,导致布局看起来比实际代码复杂多了,将{}与里面语句作为一整块缩进,并将其间语句对齐更好一点。
建议做成这样-------
for (n=10;n>1;n--){
s = s + 1 / ( float ) n ;
printf ("%6.4f\n",s) ;
}
关于这种情况可能会丢括号,不宜检查{的配对,如果你习惯了括号成为控制结构的一部分,就不会丢掉的,
如下图,A与B是控制结构的一整体,C与D从属于控制结构,一目了然
或者大家都习惯的这样:
for (n=10;n>1;n--)
{
s = s + 1 / ( float ) n ;
printf ("%6.4f\n",s) ;
}
相关文章推荐
- Codeforces #324 Div2 B.Kolya and Tanya(dp、思维)
- Android Design Support Library--TextInputLayout的使用
- 20160423/24省赛选拔总结
- ORACLE之sql语句优化
- 3、Pull解析、SQLite、单元测试、ListView
- C++ substr() 和 Java substring() 区别
- 基于Bootstrap使用jQuery实现输入框组input-group的添加与删除
- 构建之法 第6~7章读后感和对Scrum的理解
- SICP ex1-10 order of Growth
- Android 网络请求方法
- [数据库] MySql查询优化技巧
- 内联函数和宏定义的区别
- c++ maps
- DDOS反攻击措施
- UML类图
- 金沙江朱啸虎谈创业风口在哪儿
- CF 668C(Little Artem and Random Variable-概率)
- gradle升级更新
- App引导界面,可以这么玩
- Android在Activity中启动一个新进程报错:Can't create handler inside thread that has not called Looper.prepare()。