QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2347|回复: 12
打印 上一主题 下一主题

高质量Matlab&C&C++编程风格指南

[复制链接]
字体大小: 正常 放大

2620

主题

162

听众

1万

积分

升级  0%

  • TA的每日心情
    开心
    2015-3-12 15:35
  • 签到天数: 207 天

    [LV.7]常住居民III

    社区QQ达人 发帖功臣 新人进步奖 优秀斑竹奖 金点子奖 原创写作奖 最具活力勋章 助人为乐奖 风雨历程奖

    群组第六届国赛赛前冲刺培

    群组国赛讨论

    群组2014美赛讨论

    群组2014研究生数学建模竞

    群组数学中国试看培训视频

    跳转到指定楼层
    1#
    发表于 2015-1-7 09:39 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta

    =================================================================================
    和大家分享一些经典的关于编程风格的电子书,对于养成一个好的编程习惯和风格有一定的启示作用。
    100817132058ad04e9fbef2dba.jpg

    1008171320ea8c7741650eef73.jpg.thumb.jpg

    10081713206becc7ef8a1ce89f.jpg.thumb.jpg
    游客,如果您要查看本帖隐藏内容请回复

    ==============外一篇: 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
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持1 反对反对0 微信微信
    gancm 实名认证       

    8

    主题

    13

    听众

    1831

    积分

  • TA的每日心情

    2015-5-31 00:30
  • 签到天数: 432 天

    [LV.9]以坛为家II

    国际赛参赛者

    社区QQ达人

    群组2013电工杯A题讨论群组

    回复

    使用道具 举报

    harveymao        

    1

    主题

    10

    听众

    312

    积分

    升级  4%

  • TA的每日心情

    2014-12-6 00:46
  • 签到天数: 86 天

    [LV.6]常住居民II

    自我介绍
    数学建模的爱好者

    社区QQ达人

    群组第三届数模基础实训

    群组2014年地区赛数学建模

    群组数学建模培训课堂1

    回复

    使用道具 举报

    0

    主题

    13

    听众

    21

    积分

    升级  16.84%

  • TA的每日心情
    无聊
    2017-11-26 15:37
  • 签到天数: 25 天

    [LV.4]偶尔看看III

    自我介绍
    if i will,i can

    社区QQ达人

    群组2015年美赛冲刺

    群组2017美赛备战交流群组

    回复

    使用道具 举报

    柴泽建        

    0

    主题

    12

    听众

    18

    积分

    升级  13.68%

  • TA的每日心情
    开心
    2015-1-25 10:52
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    自我介绍
    中南大学-物联网1201-柴泽建
    回复

    使用道具 举报

    2

    主题

    7

    听众

    1668

    积分

    升级  66.8%

  • TA的每日心情
    无聊
    2015-5-20 18:54
  • 签到天数: 519 天

    [LV.9]以坛为家II

    自我介绍
    追求真理

    社区QQ达人

    回复

    使用道具 举报

    7#
    无效楼层,该帖已经被删除

    0

    主题

    12

    听众

    147

    积分

    升级  23.5%

  • TA的每日心情
    擦汗
    2015-7-10 22:18
  • 签到天数: 64 天

    [LV.6]常住居民II

    社区QQ达人

    回复

    使用道具 举报

    励俊07        

    0

    主题

    11

    听众

    364

    积分

    升级  21.33%

  • TA的每日心情
    奋斗
    2016-9-13 17:20
  • 签到天数: 222 天

    [LV.7]常住居民III

    自我介绍
    建模爱好新手

    群组数学建模

    群组国赛讨论

    回复

    使用道具 举报

    zjyan        

    1

    主题

    13

    听众

    14

    积分

    升级  9.47%

  • TA的每日心情

    2015-6-26 23:04
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    自我介绍
    美赛O奖

    社区QQ达人

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-5-22 12:17 , Processed in 0.750509 second(s), 108 queries .

    回顶部