在线时间 1084 小时 最后登录 2015-9-10 注册时间 2014-4-18 听众数 162 收听数 1 能力 10 分 体力 43976 点 威望 6 点 阅读权限 255 积分 15250 相册 0 日志 0 记录 1 帖子 3471 主题 2620 精华 1 分享 0 好友 513
升级 0%
TA的每日心情 开心 2015-3-12 15:35
签到天数: 207 天
[LV.7]常住居民III
群组 : 第六届国赛赛前冲刺培
群组 : 国赛讨论
群组 : 2014美赛讨论
群组 : 2014研究生数学建模竞
群组 : 数学中国试看培训视频
=================================================================================
和大家分享一些经典的关于编程风格的电子书,对于养成一个好的编程习惯和风格有一定的启示作用。
==============外一篇: faruto浅谈编程风格 ==========================
我要说的关于编程的第一个主要思想:先整体,后具体;分块把握大的算法再实现。其实这也比较符合一些生活常识,要解决一个大问题,首先我们需要从整体上把握这个问题,然后再从细节上处理相关问题。编程也是一样的,当有一个大的算法需要实现,你需要做的事整体上把握一下算法脉络,然后再分块实现,这样是好的习惯,因为每一个人对于代码的掌控能力是有限的,也就是说当一个函数的代码长度多长的话,最终你会失去掌控能力的,到后面你会连一些变量名字都会弄混的。我个人的对于单个函数的代码的掌控能力为1000行左右,所以当一个函数过于太大,超过我个人的掌控能力的时候,我就会把这个函数再进行分块,进而每个字块函数的代码行数让其在我的掌控能力之内,这样做的好处是一则对于单个子函数调试找bug方便,二则对于整体的大函数项目,最后整体做一个接口把各个子函数链接到一起就行了,大函数出错的话,很容易找到是哪个子函数出的问题,若都放到一起来实现,调试起来会让人疯掉的。所以说,编程的时候需要:先整体,后具体;分块把握大的算法再实现。这个说起来做起来难,需要个中体会。
第二个我想谈的是:编程风格问题。无论学习什么编程语言,最开始的基础是很重要的,一个好的编程习惯和代码风格会使你往后的编程道路很顺利,否则的话往后进展会出现瓶颈。从代码的质量也就能看出你本身的编程能力了,如果你平时的编程习惯好,在最终代码成型时出现的bug就会少很多,所以说平时的编程习惯是很很重要的,少量的代码无所谓的(200行以内),但当代码量多起来,如果你平时编程习惯不好,到时你连前后的变量名称定义自己都会搞混的。说了这么多,到底怎么是一个好的编程风格呢?这个没有十分统一的标准,以前看过一本书《C++编程高手》里面详细讲了一些同认的好的编程习惯风格,包括变量的合理命名,恰当使用空格和换行符使得代码看起来更舒服等等。
比如下面这段普通简单的A+B Problem的代码(MATLAB):
function solve_AplusB_problem
disp('This is a programme for solving A+B problem');
A=input('Please input the fist number A:');
B=input('Please input the second number B:');
C=A+B;
str=['The result of A+B is:',num2str(C)];
disp(str);
复制代码
这段代码再简单不过,当年的我可能也差不多类似于上面那样写代码,但现在的我就会这样来写:
function solve_AplusB_problem
% by faruto
% a test programme for solving A+B problem
disp('This is a programme for solving A+B problem');
A = input('Please input the fist number A:');
B = input('Please input the second number B:');
C = A + B;
str = ['The result of A+B is:', num2str( C )];
disp( str );
复制代码
两段代码几乎没有差别,实现内容也一样,后者的代码段就像“神经病”一样多了很多空格和空白行,但我敢说后者的代码风格习惯更好,代码和别人交流起来也更容易,这就是一个非常非常简单的例子,如果代码很长很复杂,你会发现好的代码风格超级重要的!个中感觉还望看官您自己体会。O(∩_∩)O~
回想自己学习MATLAB的过程(或者说学习其他编程语言的过程),感受最深的一点就是一定要自己多多动手,遇到不会的东西先要查看帮助文件或者通过网络搜索来找到相应的答案,也就是说需要有自我帮助能力,这样才能不断提高自己的能力。当然有些非常棘手的问题是需要向高人请教的。
zan