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

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

相关文章

Python实现一键PDF转Word(附完整代码及详细步骤)

《Python实现一键PDF转Word(附完整代码及详细步骤)》pdf2docx是一个基于Python的第三方库,专门用于将PDF文件转换为可编辑的Word文档,下面我们就来看看如何通过pdf2doc... 目录引言:为什么需要PDF转Word一、pdf2docx介绍1. pdf2docx 是什么2. by

Spring Security介绍及配置实现代码

《SpringSecurity介绍及配置实现代码》SpringSecurity是一个功能强大的Java安全框架,它提供了全面的安全认证(Authentication)和授权(Authorizatio... 目录简介Spring Security配置配置实现代码简介Spring Security是一个功能强

通过cmd获取网卡速率的代码

《通过cmd获取网卡速率的代码》今天从群里看到通过bat获取网卡速率两段代码,感觉还不错,学习bat的朋友可以参考一下... 1、本机有线网卡支持的最高速度:%v%@echo off & setlocal enabledelayedexpansionecho 代码开始echo 65001编码获取: >

Java集成Onlyoffice的示例代码及场景分析

《Java集成Onlyoffice的示例代码及场景分析》:本文主要介绍Java集成Onlyoffice的示例代码及场景分析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 需求场景:实现文档的在线编辑,团队协作总结:两个接口 + 前端页面 + 配置项接口1:一个接口,将o

SpringBoot实现Kafka动态反序列化的完整代码

《SpringBoot实现Kafka动态反序列化的完整代码》在分布式系统中,Kafka作为高吞吐量的消息队列,常常需要处理来自不同主题(Topic)的异构数据,不同的业务场景可能要求对同一消费者组内的... 目录引言一、问题背景1.1 动态反序列化的需求1.2 常见问题二、动态反序列化的核心方案2.1 ht

IDEA实现回退提交的git代码(四种常见场景)

《IDEA实现回退提交的git代码(四种常见场景)》:本文主要介绍IDEA实现回退提交的git代码(四种常见场景),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.已提交commit,还未push到远端(Undo Commit)2.已提交commit并push到

Kotlin Compose Button 实现长按监听并实现动画效果(完整代码)

《KotlinComposeButton实现长按监听并实现动画效果(完整代码)》想要实现长按按钮开始录音,松开发送的功能,因此为了实现这些功能就需要自己写一个Button来解决问题,下面小编给大... 目录Button 实现原理1. Surface 的作用(关键)2. InteractionSource3.

JSR-107缓存规范介绍

《JSR-107缓存规范介绍》JSR是JavaSpecificationRequests的缩写,意思是Java规范提案,下面给大家介绍JSR-107缓存规范的相关知识,感兴趣的朋友一起看看吧... 目录1.什么是jsR-1072.应用调用缓存图示3.JSR-107规范使用4.Spring 缓存机制缓存是每一

使用Java实现Navicat密码的加密与解密的代码解析

《使用Java实现Navicat密码的加密与解密的代码解析》:本文主要介绍使用Java实现Navicat密码的加密与解密,通过本文,我们了解了如何利用Java语言实现对Navicat保存的数据库密... 目录一、背景介绍二、环境准备三、代码解析四、核心代码展示五、总结在日常开发过程中,我们有时需要处理各种软

Java List排序实例代码详解

《JavaList排序实例代码详解》:本文主要介绍JavaList排序的相关资料,Java排序方法包括自然排序、自定义排序、Lambda简化及多条件排序,实现灵活且代码简洁,文中通过代码介绍的... 目录一、自然排序二、自定义排序规则三、使用 Lambda 表达式简化 Comparator四、多条件排序五、