机房重构--代码规范学习

2024-08-26 21:38

本文主要是介绍机房重构--代码规范学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        数据库设计已经完成了,这就进入编码的阶段了,在这之前为了保证这次写代码的规范性,花了一个多小时重温了米老师曾经给我们讲课时候讲的《编码规范》,在规范上的收获还是比较大的,毕竟第一次做这个系统的时候好多规范都没有遵循,而且更大的体会是对于未知领域的恐惧更少了,更加期盼着这个系统的进行,下面是我从中提取的比较重要的一些规范,希望对大家的编码能有所参考。

设置模块和过程

  1、过程的名字不要使用缩写

   • 如果你认为应用程序中的某些工程应该使用缩写,那么请将这些情况加上注释,并确保每个人在所有时间内都使用这些缩写。  

   • 决不要在某些过程中对某些单词进行缩写,而在别的过程中却不使用缩写。


  2、为每个过程拥有单个退出点

   •    创建单个退出点,可使过程更像是黑箱。代码的执行从一个门进来,代码的退出则从另一个门出去,因此产生的错误比较少,调试也不太难。

   •创建单个退出点的操作是非常复杂的,但是它的好处是极大的。

   •得到的好处大于你付出的努力,这种情况并不是总能碰到,因此务必充分利用它。

   •解决这个问题的办法是在每个过程中创建一个PROC_EXIT标注。

   •在这个标注下面,放入所有必要的清除代码和一个相应的Exit语句(Exit Sub、Exit Function和Exit Property)。

   •每当你需要退出该过程时,只需加上一个GoTo PROC_Exit语句,而不必直接调用Exit命令。


  3、当参数只接受较小的一组值时,请使用枚举值。

    这期间还对如何将过程封装为模块进行了讲解,对于模块块,做到高内聚低耦合,其次就是给过程如何起名字,尽量可观性强一些。

命名规范

   匈牙利命名法:它使用3字符前缀来表示数据类型和控件类型等……




    现在给对象、变量、控件等命名尽量采用匈牙利命名法,前缀三个字符小写,中间的单词手写字母大写,也就是所谓的“驼峰式”命名法。但是对于标号的命名则要全部大写,这一点需要注意。。。

    同时对于在命名时候缩写的规范,我的理解对于比较通用的而且很长的单词可以采用缩写,但是尽量少用,让阅读程序的人更加方便的知道变量的意思是什么。这一点结合着注释一起来理解就更好。

变量

   创建和使用变量时,应该设法使每个变量服务于一个定义明确的目的。

   人们希望变量能够服务于双重目的,但是它带来的节省少量内存的好处往往被代码的复杂性所抵消。

   用于多个目的的变量称为无焦点的变量。

   为变量赋予表义性强的名字

   例如Dim i AsInteger

For i = 0To rstCustomers.Fields.Count- 1

Debug.Print  rstCustomers.Fields(i).Name

Next i

Dim intIndexAs Integer

For intIndex = 0To rstCustomers.Fields.Count- 1

Debug.Print rstCustomers.Fields(intIndex).Name

Next intIndex 

   显然后者给人更强的可阅读性,对于命名时iintIndex,后者几乎不用看注释就能够知道这个变量是干什么用的。

   •即使你的代码永远不被其他人查看,也应该将它编写成可供几十个其他编程人员查看的样子。

    –类似xyi这样的变量,在由故意缩短的变量名构成的代码很难理解和维护。现在已经没有站得住脚的理由采用这种做法了。

    –这并不是说所有变量都应该使用很长的名字,你应该选用最有意义的名字,不管变量名是长是短。

   •使用

    –EmployeeAddress1、

    –EmployeeAddress2

    –SalesTotal

   •这样的名字,其好处是很明显的,这些名字比简化了的名字更具表义性。

 

   使用统一的量词

   •可能一些变量,用于跟踪一组变量中的第一个项目和最后一个项目。

   •在这种情况下,应该在变量名的结尾使用一个标准化量词。

   •通过在结尾处放置一个量词,就可以创建更加统一的变量,它们更加容易理解,也更容易搜索。

   •不正确:

DimstrFirstCustomer As String

DimstrLastCustomer As String

DimstrPreviousCustomer As String

   •正确:

DimstrCustomerFirst As String

DimstrCustomerLast As String

DimstrCustomerPreviousAs String


   用精心选择的数据类型说明变量

      •   Visual Basic为变量提供了许多不同的数据类型,在给定的情况下常常可以使用多个数据类型。

      •   为每个变量选择最佳的数据类型,就能减少对内存的需求量,加快代码的执行速度,降低出错的可能性。

      另外,不同的数据类型有着不同的资源需求,并且用于变量的数据类型可能会影响根据该变量进行计算所产生的结果。


•   若要存储任何类型的文本,请使用S t r i n g数据类型。

–  这种数据类型可以包含任何有效的键盘字符,包括数字和非字母字符

•   如果只要存放True和False这两个值,请使用Boolean数据类型。

•   若要存放不包含小数位、大于或等于-32768、小于或等于32767的数字,请使用Integer数据类型。

•   若要存放不带小数位的数字,但是数字值大于或小于Integer数据类型允许的值,请使用Long数据类型

•   若要存放包含小数位的数字,请使用Single数据类型。

–  除非你编写极其复杂的数学应用程序,需要极大的数字或者近似0的数字,否则,Single数据类型几乎适用于存放包含小数的所有值。

•   如果需要存放的数字大于Single数据类型能够存放的数字,则请使用Double数据类型。

•   若要存放美元金额,请使用C u r r e n c y数据类型。

–  该数据类型使用固定的4位小数。不过,除非指定显示4位小数的值,否则当你显示该值时,它只显示两位小数。

•   若要存放日期或时间值,请使用D a t e数据类型。

–  例如,如果存放的值是7/22/1997,Visual Basic将不把它作为简单的文本字符串来处理,它知道这代表1 9 9 7年7月2 2日。

•   如果可能,每行只说明一个变量。

•   不正确:

DimintAge As Integer, strName As String, strAddress AsString

•   正确:

DimintAge As Integer

DimstrName As String

DimstrAddress As String

对于不同的数据变量用什么样的类型去定义和变量的命名是这块我觉得最为重要的。

注释

   用注释来说明何时可能出错和为什么出错

   •由于VisualBasic所具有的性质,有些错误是不可避免的,而另一些错误则是绝对必要的。

   –例如,你决定在保存新记录之前不查看数据库中是否已经存在记录(以避免创建副本),这样就能更快地保存该记录,并且,如果该记录是个副本,就可以捕获该错误。

   注释书写规范:

   •(1) 使用完整的语句。

    –虽然不必将注释分成段落(最好也不要分成段落),但是你应该尽量将注释写成完整的句子。

   •(2) 避免使用缩写。

   •(3) 将整个单词大写,以突出它们的重要性。

    –若要使人们注意注释中的一个或多个单词,请全部使用大写字母。

    对注释进行缩进,使之与后随的语句对齐:

   •注释通常位于它们要说明的代码的前面。

    –为了从视觉上突出注释与它的代码之间的关系,请将注释缩进,使之与代码处于同一个层次上。

   •注释不是代码的附属品,它与代码是共存的关系。

    为每个过程赋予一个注释标头:

   •每个过程都应该有一个注释标头。

    –过程的注释标头可以包含多个文字项,比如输入参数、返回值、原始作者、最后编辑该过程的程序员、上次修改日期、版权信息,甚至包括程序员喜欢的颜色。

   •过程的所有注释标头都应该采用相同的格式化方法,每种信息应该与其他信息明确区分开来。


   使用内部注释来说明代码进程:

   •内部注释是最常用和最重要的注释。

   •使用内部注释可以说明过程的实现方法,使读者能够顺利通过各个不同的转折。

   •(1) 在每个I f语句的前面加上注释。

   •I f语句用于作出对程序执行流产生影响的判断。在代码中的每个I f语句前面加上注释。

   •(2) 在每个Select Case语句前面加上注释。

   •与I f语句一样,SelectCase语句用于评估对程序执行流产生影响的表达式。它们常常比I f语句更加复杂。你应该对Select Case语句加上透彻的注释。

   •(3) 在每个循环(包括F o r. . . N e x t循环和D o循环)的前面加上注释。

   •每个循环都有它的作用,许多情况下这个作用并不清楚直观。无论循环的复杂程序如何,都应该在它的前面加上一个注释来详细说明它的作用。

   •(4) 在修改了全局变量的每个语句前面加上注释。

   •如果非常需要使用全局变量,请说明你为何要修改它。这将使代码的调试容易一些。

   用行尾注释来说明变量

 

 界面的设计

   界面设计必须保持一致

   快捷键的使用以及一致性

 

    这些就是今天对于代码规范性的学习后的收获,基本上这次重构的时候这些都能用得上了,编码的规范在这次实战中必须要做的正正规规的,这也是走向职业化的一次历练,加油,通过这次对编码规则的重温,更多的是减少对写代码的恐惧已经编代码时候犹豫不决的顾虑,That is all.


这篇关于机房重构--代码规范学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1109753

相关文章

Java集合之Iterator迭代器实现代码解析

《Java集合之Iterator迭代器实现代码解析》迭代器Iterator是Java集合框架中的一个核心接口,位于java.util包下,它定义了一种标准的元素访问机制,为各种集合类型提供了一种统一的... 目录一、什么是Iterator二、Iterator的核心方法三、基本使用示例四、Iterator的工

Java 线程池+分布式实现代码

《Java线程池+分布式实现代码》在Java开发中,池通过预先创建并管理一定数量的资源,避免频繁创建和销毁资源带来的性能开销,从而提高系统效率,:本文主要介绍Java线程池+分布式实现代码,需要... 目录1. 线程池1.1 自定义线程池实现1.1.1 线程池核心1.1.2 代码示例1.2 总结流程2. J

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

Vue实现路由守卫的示例代码

《Vue实现路由守卫的示例代码》Vue路由守卫是控制页面导航的钩子函数,主要用于鉴权、数据预加载等场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、概念二、类型三、实战一、概念路由守卫(Navigation Guards)本质上就是 在路

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

JAVA实现Token自动续期机制的示例代码

《JAVA实现Token自动续期机制的示例代码》本文主要介绍了JAVA实现Token自动续期机制的示例代码,通过动态调整会话生命周期平衡安全性与用户体验,解决固定有效期Token带来的风险与不便,感兴... 目录1. 固定有效期Token的内在局限性2. 自动续期机制:兼顾安全与体验的解决方案3. 总结PS

C#中通过Response.Headers设置自定义参数的代码示例

《C#中通过Response.Headers设置自定义参数的代码示例》:本文主要介绍C#中通过Response.Headers设置自定义响应头的方法,涵盖基础添加、安全校验、生产实践及调试技巧,强... 目录一、基础设置方法1. 直接添加自定义头2. 批量设置模式二、高级配置技巧1. 安全校验机制2. 类型

Python屏幕抓取和录制的详细代码示例

《Python屏幕抓取和录制的详细代码示例》随着现代计算机性能的提高和网络速度的加快,越来越多的用户需要对他们的屏幕进行录制,:本文主要介绍Python屏幕抓取和录制的相关资料,需要的朋友可以参考... 目录一、常用 python 屏幕抓取库二、pyautogui 截屏示例三、mss 高性能截图四、Pill

使用MapStruct实现Java对象映射的示例代码

《使用MapStruct实现Java对象映射的示例代码》本文主要介绍了使用MapStruct实现Java对象映射的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、什么是 MapStruct?二、实战演练:三步集成 MapStruct第一步:添加 Mave

Java抽象类Abstract Class示例代码详解

《Java抽象类AbstractClass示例代码详解》Java中的抽象类(AbstractClass)是面向对象编程中的重要概念,它通过abstract关键字声明,用于定义一组相关类的公共行为和属... 目录一、抽象类的定义1. 语法格式2. 核心特征二、抽象类的核心用途1. 定义公共接口2. 提供默认实