如何提高代码可读性

一、要提高的代码的可读性,可以从以下几方面努力

1、 清晰地表达意图

2、好的变量、方法、类名

3、 一个变量、类、方法只做一件事

4、 同一个方法体内,保持相同的抽象层次

5、一致的缩进,一致的格式

6、 不要重复自己(避免手动的复制与粘贴代码)

7、 减少“语法噪音”

8、减少代码中的嵌套级别

9、 命名时取有意义的名字,避免不规范的缩写

二、具体的提高代码的可读性的做法

1、先写注释,再写代码;理清思路再动手

(1)清晰的思路是编程行动的良好指南

花点时间思考一下,不要一接到任务就动手编代码,从而陷入技术细节不可自拔

例如

C# 代码   复制

//功能说明:XXX

private void MyMainFunction()

{

//第一步,XXX

//第二步,XXX

MySubFunction ();//实现XXX

//第三步,XXX

}

//功能说明:XXX

private void MySubFunction()

{

}

 

(2)理清思路后,在空白处填写自己的代码

如果某个步骤中实现起来感觉有点麻烦,那就先放一个空的子函数,为这个子函数建一个空的函数体——保证编译始终通过,稍后再填充这个空函数体。这种方法不影响你的整体思路,避免陷入编程细节,同时又让“大事化小,小事化了”。

(3)编完主函数后,填充空的子函数体

通过主函数的运行效果,可以实时检测子函数编写的正确与否。我们编写的子函数都即时被应用场景所调用,也就是即时的被测试,这不也是测试驱动的思想吗?事实证明,这样得到的函数,比预先设计的函数更有用。这样,只要思路清晰正确,编程就不会走太大弯路。

(4)注释应先于代码存在,而不是编写完代码之后去补注释。

因为人固有的懒惰,编写完代码之后都不情愿再去主动加注释,这使得代码的可读性变差。

因为大多数人都懒得加注释,所以我对初学者一般会要求每五行要有一行注释,总之是多多益善。矫枉必须过正!因为,减少注释是一件容易的事。有人会担心注释过多的问题,可是至今我还没有看到注释过多的情况。

另外,利用空白或空白行合理分隔代码,也是一种良好的注释。就像好的文章印刷时,段落间距要大一点是一样的。文章中也要留白!

使用region合理分隔代码,同时在region中加入注释。特别是,一定要把私有函数聚集到region中折叠起来,不要与公有函数(或事件函数)交叉,因为我们阅读代码往往是从公有函数(或事件函数)入手的。这可以隐藏细节,使代码看起来更整洁。

2.给变量起个好名字

 
合理的变量命名是代码可读的基础。好的命名,不仅仅是使得代码易读,它代表了你对业务领域的理解,对程序逻辑的认知,对项目框架的把握。所以,好的程序员很多时候纠结的不是技术实现问题,而是如何为变量起一个好名字,使得代码读起来流畅,能让更多的人理解!
 
遵循一些成熟的命名规范,给变量起个好名字的事会容易一些。接下来,我们探讨一下常见的命名规范问题。

1)常见的大小写命名法:
 
PascalCasing(大写开头):用于名字空间、类型、成员等的命名,举例:FileStream。
 
camelCasing(驼峰命名法,小写开头):用于形参、局部变量、私有字段等的命名。举例ToInt32(string value)。
 
匈牙利命名法(小写开头,首单词为数据类型):不推荐使用,因为IDE的智能提示很容易让你知道变量的类型。举例:intCount、iCount。
 
另外,微软建议不要在单词间使用下划线。

2)名字空间的命名
 
<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]

举例
 
XuanyuanTech.RailwayMis.Web

3)类(结构)及对象的命名
 
名词或名词短语,因为它们代表系统中的实体。

举例
 
Student student;

List<Student> students;

4)接口的命名
 
表示类型层次的根基时:名词或名词短语,如:IList<T>

表示某种能力时:形容词或形容词短语,如:IComparable<T>

5)方法的命名
 
动词或动词短语,DoSomething()。如:String.Split()
 
返回布尔值时使用表示肯定性的短语,并考虑第三人称。如:collection.Contains(item)

6)属性的命名
 
名词短语或形容词。举例:
 
public class ListView{
 
 public ItemCollection Items {get;}//这里用复数形式
 
}
 
用肯定性短语命名布尔属性,考虑前缀“Is/Can/Has”。举例:CanRead、IsPostBack。

 
7)控件的命名
 
在ASP.NET MVC编程中是不需要这项规范的。
 
在WinForm、ASP.NET WebForm编程中,我喜欢使用匈亚利命名法给操控型控件命名,操控型控件主要指菜单、按钮、树图等。如menuFile、menuFile_Open分别表示一个一级和二级菜单,btnFile_Open表示一个按钮,这也避免了菜单和按钮功能相同时命名重复的尴尬。另外,如果你在IDE中输入一个menu,所有的菜单控件会按字母顺序在智能提示栏中整齐的排列显示。IDE为按钮menuFile自动生成的点击事件函数命名为private void menuFile_Click(),这比File_Click()更好理解,因为在这里智能提示不能告诉你File是什么东东。
 
在添加或编辑界面中,会有大量的编辑型控件(主要指文本框、下拉框等)与数据实体的属性对应。这时我们可以考虑使用统一的前缀e给这些控件命名,如编辑框eName对应实体对象的Name属性,e在这里可以理解为entity或edit。使用统一的前缀e,为的就是在IDE中输入前缀后,其智能提示的内容与实体对象的属性提示保持顺序上的一致,不被其它控件的名字插入而干扰对应的一致性。当然,如果使用自动化代码生成工具,也可以考虑不使用前缀。
 
这里,我们较多的考虑了IDE(特别是智能提示)对编程的影响。同时我们也看到IDE生成的事件函数名字并没完全遵守不使用下划线的约定。
 
命名规范不是一成不变的,在特定场景下可以有自己风格的约定,前提是要使代码保持一致、易读。比如,一般我们强烈反对使用汉语拼音命名变量,可是在有些项目中,特别是涉及国内政府、院校的信息标准时,其数据库字段(量很大)完全是按汉语拼音首字母制定的,如果非要翻译成英文就有点矫枉过正了(工作量本身也很大)。一旦熟悉了这个行业之后,这些汉语拼音简写也就成了业务领域知识的一部分了,也就不那么别扭了,这也算中国特色吧。

3、如何检测你的代码是否规范

(1)人工检测:让同伴阅读你的代码(结对编程,代码复审),发现问题。自我检测,不懈追求――“让人阅读你的代码,就像阅读文章一样流畅!”。
 
(2)工具检测:FxCop,微软的一个开发工具,可以对编译过的托管代码进行分析,并告诉用户哪些地方不符合设计规范。

4、重构你的代码,做得更好一点点!

嗅嗅代码的坏味道:如果你发现在单页中写了过多的MySubFunction,如果你检测到不符合设计规范的代码,如果你写了过长的函数,如果你发现你在重复拷贝相同的代码段……是时候重构你的代码了!
 
何谓重构?重构是对软件内部结构的一种调整,目的是在不改变软件可察行为的前提下,提高其可理解性,降低其修改成本。
 
为何重构?改进软件设计(消除重复,Don’t Repeat Yourself);使代码更易理解(提高可读性);帮你找到Bug(Keep Your Code Clean);助你提高编程速度(后退是为了大踏步的前进)。
 
何时重构?三次法则:事不过三,三则重构。重构不是重构的目的,当重构能帮助你把后续的事情做得更好,那么还等什么?重构的时机:添加功能时,修补错误时,复审代码时。
 
如何重构?小步前进,不断验证。

常见的重构原因和对策:
 
(1)代码重复。提取为公共类/函数。
 
(2)代码形式重复。考虑模板类/泛型。
 
(3)过多函数的类。考虑使用partial分部类,将类分拆到多个文件中去,每个分部类对应一个文件。如MVC中Controller类往往会成为包含过多Action函数的类,就可将其按功能域拆分为多个分部类。
 
(4)过长的参数列表。构造一个对象,包含所有要用的参数,然后将这个对象当作参数即可。
 
编程的过程实际是一个不断重构(改进)的过程。通过不断重构,可以去除代码的坏味道,编写可读性更好的代码。同时也深化了你对设计的理解,提高了你的编程素养。
 
重构,是一种生活态度,每天做得更好一点点。不要有过多的期望,一点点就好!不断前进,逐步逼近完美。

5、向微软学习,向MSDN学习!
 
微软作为业界最为成功的软件生产商,在各方面都有值得我们学习的地方。我觉得Windows、Office等是我们做界面和为用户设计操作模式的最好老师,当我没有思路的时候,我都会打开Windows的某个功能看看,就会受到启发。
 
MSDN是我们学习编程的最好老师。MSDN是众多大师的智慧结晶。经常看MSDN中的类库,不仅可以系统的掌握类库的功能,还可以学到如何给变量命名,如何进行架构设计等。看MSDN中的示例代码,也是快速上手的捷径;特别是一些“快速指南”,能很快让你了解某个方面的开发技术。

时间: 2024-10-16 09:52:44

如何提高代码可读性的相关文章

Unity3d 基本设计开发 原则(提高代码可读性)

参考:http://blog.csdn.net/qq_34134078/article/details/51780356 1.单一原则 即:明确类的定义.通俗来讲,让他们只做一件事,而不是多件事. 提高类的可读性,更加好维护,降低耦合度.当然,方法,变量亦是如此. 2.里氏替换原则 a.子类可以实现父类的抽象方法,但不能覆盖父 类的非抽象方法. b.子类可以增加自己特有的方法. 不遵循的后果:写代码的问题几率大大增大. 3.依赖倒置原则 高层模块不应依赖底层模块,二者应该都依赖抽象.细节依赖抽象

提高代码可读性的注释技巧 实用型

很多程序员在写代码的时候往往都不注意代码的可读性,让别人在阅读代码时花费更多的时间.其实,只要程序员在写代码的时候,注意为代码加注释,并以合理的格式为代码加注释,这样就方便别人查看代码,也方便自己以后查看了.下面分享十个加注释的技巧:为每个代码块添加注释,并在每一层使用统一的注释方法和风格.例如:· 针对每个类:包括摘要信息.作者信息.以及最近修改日期等;· 针对每个方法:包括用途.功能.参数和返回值等.在团队工作中,采用标准化的注释尤为重要.当然,使用注释规范和工具(例如C#里的XML,Jav

提高 代码 可读性的 一点小建议

3. UI工厂类 与 代码块 UI工厂类: 其实代码很简单,就是把对Label, Button等控件的属性赋值封装一下, 做到一行代码就能创建一个VIew, 如下图, 虽然这一句代码有点长, 但是习惯之后写个View是真心快 UI工厂类.h

提高代码质量:如何编写函数

阅读目录 命名 函数参数 编写函数体 总结 函数是实现程序功能的最基本单位,每一个程序都是由一个个最基本的函数构成的.写好一个函数是提高程序代码质量最关键的一步.本文就函数的编写,从函数命名,代码分布,技巧等方面入手,谈谈如何写好一个可读性高.易维护,易测试的函数. 回到顶部 命名 首先从命名说起,命名是提高可读性的第一步.如何为变量和函数命名一直是开发者心中的痛点之一,对于母语非英语的我们来说,更是难上加难.下面我来说说如何为函数命名的一些想法和感受: 采用统一的命名规则 在谈及如何为函数取一

javascript 代码可读性

可读性的大部分内容都是和代码缩进相关的,必须保证代码有良好的格式.可读性的另一方面就是注释,一般而言,有如下一些地方需要进行注释 1.1.1           函数和方法 每个函数或方法都应该包含一个注释,描述其目的和用于完成任务所可能使用的算法,陈述事先的假设也非常重要,如参数代表什么,函数是否有返回值等等 1.1.2           大段代码 用于完成单个任务的多行代码应该在前面放一个描述任务的注释 1.1.3           复杂的算法 如果使用了一个独特的方式解决某个问题,则要

如何提高代码质量(转)

原文:如何提高代码质量 1.软件产品质量 软件产品质量通常可以从以下六个方面去衡量(定义) : l         功能性(Functionality),即软件是否满足了客户业务要求: l         可用性(Usability),即衡量用户使用软件需要付出多大的努力: l         可靠性(Reliability),即软件是否能够一直处在一个稳定的状态上满足可用性: l         高效性(Efficiency),即衡量软件正常运行需要耗费多少物理资源: l         可维

(转)提高代码质量---one

1. 摘要 这是烂代码系列的第二篇,在文章中我会跟大家讨论一下如何尽可能高效和客观的评价代码的优劣. 在发布了关于烂代码的那些事(上)之后,发现这篇文章竟然意外的很受欢迎,很多人也描(tu)述(cao)了各自代码中这样或者那样的问题. 最近部门在组织bootcamp,正好我负责培训代码质量部分,在培训课程中让大家花了不少时间去讨论.改进.完善自己的代码.虽然刚毕业的同 学对于代码质量都很用心,但最终呈现出来的质量仍然没能达到“十分优秀”的程度. 究其原因,主要是不了解好的代码“应该”是什么样的.

原生 js前端路由系统实现2之代码可读性 和可扩展性

前一篇 尝试着实现了前端路由的部分功能 原生 js前端路由系统实现1 代码可读性 影响代码可读和易于理解的因素 1 代码规范 2缩进空格 3减少函数嵌套层次 4函数单一职责 5.... 以上这些顶多只能在外观上面看起来清晰(也不一定真的清晰),但随着代码量的增大  代码依然非常难读和易于理解 如果给你几十行代码,程序员通过琢磨也能短时间搞清楚,如果给你上万行代码 即便技术大牛也得花大量的时间去阅读和调试才能看懂 影响代码可读性的主要原因是 代码的多少 以下是上次实现路由的代码 去掉兼容AMD等库

[探索]在开发中尽量提高代码的复用性

ctrl+c 和 ctrl+v 给我们带来了很多的便利,但是也使我们变得懒惰,不愿思考. 1.前言 相信很多人和我一样,在开发项目的时候,因为项目赶,或者一时没想到等原因.频繁使用 ctrl+c 和 ctrl+v ,导致代码很多都是重复的.这几天,也看了自己以前写的代码,简单的探索了一下,挑选几个实例,分享下如何在特定场景下,保证代码质量前提下,提高代码复用性. 提高代码的复用性,应该是不同场景,不同解决方案的.同时也要保证代码质量.不建议强制提高代码复用性,如果提高代码复用性会大大的降低代码的