算法第一章作业(编码规范与心得体会)

软件工程2201唐珂 2022级 2023-09-10 20:00:52

编码规范(摘选自知乎《华为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、源程序中关系较为紧密的代码应尽可能相邻

 

《数学之美》读后感

整体读后感(包括联系生活的领悟)

  数学是自由的,它包含着创造。数学创造智慧,数学也参与着我们的生活。《数学之美》一书中用很多通俗易懂、贴近生活的例子向我们讲述了很多数学原理的应用场景。所用的数学模型是那么简单,效果又是如此显著,看了之后让人拍手叫绝。与此同时,我也注意到数学与编程的联系,一个好的数学模型,可以直接优化整个算法。数学是多么奇妙的一门学科,只有你想不到,没有数学做不到。

 

...全文
42 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容简介: 本书通过一个模拟的实例,逐步介绍解决问题的思路、方法和良好的习惯,帮助刚入行的人员拿起手边简单的武器解决所遇到的问题。同时采用比较的方法介绍.net framework 4.0(c#4.0)的一些重要知识点。 本书分为主辅两大部分:第一部分为主线,讲述一个足够“大”(同时也是足够“小”)的模拟工程;第二部分为辅线,介绍c#以及.net framework的基础和特性,采用结合实际工程的方式来引入这些重要的知识点,说明为什么用它们以及怎么使用,并且阐述这些技术的限制,以帮助读者形成自己的技术判断能力,这些知识也是公司比较喜欢的面试题。两个部分相互索引,相辅相成,让读者了解实际工作中可能遇到的问题和所需的知识点,也可以反过来学习这些技术在实际工作中是如何选择和应用的。 最重要的是,本书将作者工作时的心得体会穿插在章节之中。书中所有的关键技术术语也会在括号中给出对应的英文单词,以方便读者阅读及搜索外文资料。 本书针对因工作等需要使用c#(.net framework)来完成软件项目的人群,可供c#编程人员参考,也可作为大中专院校使用c#进行编程课程的教材。 目录 Chapter 01工程开始(ProjectKickoff) 1.1 一个工作上的小问题 1.2 问题的快速分析 1.3 关键技术调研 1.3.1 查找已存在的方案 1.3.2 动手写第一个程序(第一个原型) 1.3.3 一步研究的成果(第二个原型) 1.3.4 代码整理 1.4 本章总结 Chapter02需求分析和工程计划 2.1 头脑风暴法(Brainstorming) 2.2 把功能归类 2.3 关键路径法(Critical Path Method) 2.4 本章总结 Chapter03先行 3.1 命名规范(NamingNotations) 3.2 编码约定(CodingConventions) 3.3 版本控制(RevisionControl) 3.4.本章总结 Chapter04快速原型 4.1 计划变更及分析 4.2 实现搜索局域网内机器的功能 4.3 单元测试与调试基础 4.3.1 使用MbUnit 4.3.2 使用NUnit 4.3.3 组合参数测试 4.4 功能整合 4.4.1 设计简单的用户界面 4.4.2 整合搜寻局域网内机器的功能 4.4.3 整合发消息功能 4.5 本章总结 Chapter05重构之上:多线程

435

社区成员

发帖
与我相关
我的任务
社区描述
广东外语外贸大学信息科学与技术学院
算法 高校
社区管理员
  • brisksea
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧