算法第一章作业

编码规范(摘选自知乎《华为C语言编程规范》)

代码总体原则

1、清晰第一

清晰性是易于维护、易于重构的程序必需具备的特征。代码首先是给人读的,好的代码应当可以像文章一样发声朗诵出来。

目前软件维护期成本占整个生命周期成本的40%~90%。根据业界经验,维护期变更代码的成本,小型系统是开发期的5倍,大型系统(100万行代码以上)可以达到100倍。业界的调查指出,开发组平均大约一半的人力用于弥补过去的错误,而不是添加新的功能来帮助公司提高竞争力。

一般情况下,代码的可阅读性高于性能,只有确定性能是瓶颈时,才应该主动优化。

2、简洁为美

简洁就是易于理解并且易于实现。代码越长越难以看懂,也就越容易在修改时引入错误。写的代码越多,意味着出错的地方越多,也就意味着代码的可靠性越低。因此,我们提倡大家通过编写简洁明了的代码来提升代码可靠性。

废弃的代码(没有被调用的函数和全局变量)要及时清除,重复代码应该尽可能提炼成函数。

3、选择合适的风格,与代码原有风格保持一致

产品所有人共同分享同一种风格所带来的好处,远远超出为了统一而付出的代价。在公司已有编码规范的指导下,审慎地编排代码以使代码尽可能清晰,是一项非常重要的技能。 如果重构/ / 修改其他风格的代码时,比较明智的做法是根据 现有 代码 的 现有风格继续编写代码,或者使用格式转换工具进行转换成公司内部风格。


排版与格式

1、程序块采用缩进风格编写, 每级缩进为4个空格

2、相对独立的程序块之间、变量说明之后必须加空行

3、一条语句不能过长,如不能拆分需要分行写。一行到底多少字符换行比较合适,产品可以自行确定

对于目前大多数的PC来说,132比较合适(80/132是VTY常见的行宽值);对于新PC宽屏显示器较多的产品来说,可以设置更大的值。换行时有如下建议:

  • 换行时要增加一级缩进,使代码可读性更好;
  • 低优先级操作符处划分新行;换行时操作符应该也放下来,放在新行首;
  • 换行时建议一个完整的语句放在一行,不要根据字符数断行

4、多个短语句(包括赋值语句)不允许写在同一行内 ,即一行只写一条语句

5、if 、 for 、 do 、 while 、 case 、 switch 、 default 等语句独占一行

执行语句必须用缩进风格写,属于if、for、do、while、case、switch、default等下一个缩进级别;

一般写if、for、do、while等语句都会有成对出现的„{}‟,对此有如下建议可以参考:if、for、do、while等语句后的执行语句建议增加成对的“{}”;如果if/else配套语句中有一个分支有“{}”,那么另一个分支即使一行代码也建议增加“{}”;添加“{”的位置可以在if等语句后,也可以独立占下一行;独立占下一行时,可以和if在一个缩进级别,也可以在下一个缩进级别;但是如果if语句很长,或者已经有换行,建议“{”使用独占一行的写法。

6、在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或者前后要加空格 ; 进行非对等操作时,如果是关系密切的立即操作符(如-> > ),后不应加空格

采用这种松散方式编写代码的目的是使代码更加清晰。

在已经非常清晰的语句中没有必要再留空格,如括号内侧(即左括号后面和右括号前面)不需要加空格,多重括号间不必加空格,因为在C语言中括号已经是最清晰的标志了。在长语句中,如果需要加的空格非常多,那么应该保持整体清晰,而在局部不加空格。给操作符留空格时不要连续留两个以上空格。

1、逗号、分号只在后面加空格。

2、比较操作符, 赋值操作符"="、 "+=",算术操作符"+"、"%",逻辑操作符"&&"、"&",位域操作符"<<"、"^"等双目操作符的前后加空格。

3、"!"、"~"、"++"、"--"、"&"(地址操作符)等单目操作符前后不加空格。

4、"->"、"."前后不加空格。

5、if、for、while、switch等与后面的括号间应加空格,使if等关键字更为突出、明显。

7、注释符(包括/**/、//)与注释内容之间要用一个空格进行分隔

8、源程序中关系较为紧密的代码应尽可能相邻

《数学之美》读后感

在《数学之美》中,吴军博士对“语言模型”这一章节的探讨让我印象深刻。语言模型是自然语言处理中的核心概念,它不仅涉及到语言的生成和理解,还与我们日常使用的搜索引擎、翻译软件等息息相关。

在这一章中,吴军详细介绍了如何利用数学模型来处理语言的复杂性。他提到的“n-gram模型”让我意识到,语言并不是孤立的单词,而是由一个个相互关联的词组构成的。通过统计分析,n-gram模型能够预测下一个词的出现概率,这种方法在实际应用中极为有效。吴军用简单易懂的例子,展示了如何通过这种模型来提高机器翻译的准确性,这让我对语言处理的数学基础有了更深的理解。

此外,吴军还提到了“深度学习”在语言模型中的应用,尤其是“循环神经网络”(RNN)和“长短期记忆网络”(LSTM)的引入。这些先进的技术使得计算机能够更好地理解上下文,从而生成更自然的语言。这一部分让我感受到数学与计算机科学的结合是多么强大,深度学习不仅仅是技术的进步,更是对语言本质的深入探索。

通过这一章的学习,我不仅对语言模型有了更清晰的认识,也对数学在现代科技中的应用有了更深刻的体会。吴军用生动的语言和丰富的实例,让我看到了数学的美丽与力量。希望未来能有更多的人关注和学习这些数学知识,从而更好地理解和应用它们。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值