首页 > 编程语言 >《构建之法》之结对编程

《构建之法》之结对编程

时间:2023-12-12 23:35:38浏览次数:40  
标签:结对 代码 编程 注释 构建 todo 构造函数

这一章讲的是结对编程,结对编程的好处很多,有助于提升代码质量,让两个人都对代码负责,防止甩锅扯皮。但是现实是基本没有公司会这么干,毕竟对于很多中小型的公司来说,人力成本还是很高的。书中的一些编码规范倒是值得学习的,包括代码风格与设计规范。

代码规范

代码风格规范

  • 1.缩进问题
    这个问题因人而异,我个人还是喜欢用tab键的,而且喜欢使用IDE的快捷键进行代码格式化。
  • 2.命名
    • 在变量名中不要提到类型或其他语法方面的描述。如表示全年假日的变量,不要用arraylistOfholidays,应该直接用holidays
    • 避免过多的描述,这样会使变量名很长,不方便阅读
    • 如果信息可以从上下文中得到,那么类信息就不必写在变量名中。如在Teacher表中,变量不要写teacherName,应该直接写name
    • 大小写:类/函数名用Pascal,变量用Camel
  • 3.注释
    • 注释是为了解释程序做了什么,为什么这么做,以及要特别注意的地方
    • 复杂的注释应该放在函数头
    • 注释也要随着程序的修改而不断更新,毕竟一个误导的注释比没有注释更糟糕
      程序员讨厌写注释,更讨厌别人不写注释。我自己的注释写的很随意,恐怕只有自己能看懂,这方面要改正。

代码设计规范

  • 函数:只做一件事,并且要做好。
    好像单一职责原则
  • 构造函数
    • 不要在构造函数中做复杂的操作,简单初始化所以数据成员即可
    • 构造函数不应该返回错误
  • 运算符的实现必须非常有效率,如果有复杂的操作,应定义一个单独的函数
    深以为然,自己就在判断语句里写过复杂的逻辑,导致维护比较麻烦
  • 不要用异常作为逻辑控制来处理程序的主要流程

代码审查

代码审查的目的

  • 找出代码的错误
  • 发现逻辑错误
  • 发现算法错误
  • 发现可能需要改进的地方
    我所在的团队也做过代码评审,但更多形式大于意义,坐在下面的同事更关心业务,而很少在代码层面上提出意见。所以在轮完一遍之后,便没有后续了。
    我是希望看到好的代码的,也是乐于去学习的,比如他们用了好的设计模式或者算法,我就想去抄。
    而且阅读优秀的代码也是一种享受,也会激励我更好的编程。毕竟知行要合一,好的编码规范要在做中学。
    但我也很怕把自己的屎山代码拉出来给众人看,这种感觉真的不舒服,但也会鞭策我,让我学习和模仿优秀的代码。

做标记

  • todo
  • review
  • bug
    我只用过todo,而且是滥用,定期review应该可以将标记清除,毕竟一个一年前的todo,现在也没人敢动,不知道到底有没有实现。

清除无用的代码

很多人想保留尽可能多的代码,因为以后可能会用上,这样导致程序文件里有很多注释掉的代码,这些代码都可以删除,因为源代码控制已经保存了原来的老代码。
这个感触挺深的,注释掉的代码看着很不爽,还有废弃注解之类的东西,感觉没用了干掉就完事了,无用的代码反而误导,明天就去把项目上用不到的代码清除掉。

标签:结对,代码,编程,注释,构建,todo,构造函数
From: https://www.cnblogs.com/zyl1994/p/17898108.html

相关文章

  • 上机编程[文件目录权限管理系统]学习交流
    请你设计一个文件目录权限管理系统,实现以下功能:·  DirPermSystem(int[]path,int[]statuses) —— 初始化文件目录树及其初始状态o   path[i] 下标表示目录编号,值表示其上一级目录的编号(根目录编号为 0,path[0]固定为 -1)。o   statuses[i] 表示目录 i ......
  • 深入解析Python网络编程与Web开发:urllib、requests和http模块的功能、用法及在构建现
     网络和Web开发是Python中不可或缺的重要领域,而其核心模块如urllib、requests和http在处理网络请求、HTTP请求和响应以及Web开发中扮演着关键的角色。这些模块为开发者提供了丰富的工具,使其能够灵活处理网络通信、构建Web应用和与远程服务器进行交互。深入了解这些模块的用法和作......
  • 面向对象编程,看这篇就够了
    一、面向对象编程的概念面向对象编程,是一种程序设计范式,也是一种编程语言的分类。它以对象作为程序的基本单元,将算法和数据封装其中,程序可以访问和修改对象关联的数据。这就像我们在真实世界中操作各种物体一样,比如我们可以打开电视、调整音量、切换频道,而不需要知道电视的内部......
  • 1.并发编程(上)
    1.何为进程和线程? 1.1何为进程?进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。在Java中,我们启动main函数是启动类JVM的进程,其中main函数所在的线程就是该进程的主线程。1.2何为线程?线程......
  • 【并发编程】(二)锁与并发
    并发编程是编程中重要的一环,在特定的场景下,熟悉并发知识并且掌握并发编程显得尤为重要在本篇开篇前针对几个知识点进行说明,虽然有些组件不是位于juc下并且它本身是无锁实现的,但是它却能解决并发相关的问题ThreadLocal的原理ThreadLocal应该是java工程师很熟悉的一个组......
  • 《构建之法》读书笔记(一)
      最近看了《构建之法》这本书,我从书中获取到了许多关于软件工程这一方面的知识。  软件企业=软件+商业模式。对于软件工程以及行业,程序是基本功,但是在算法和数据结构之上,软件工程决定了软件的质量,商业模式,影响了一个软件企业的成败,同时软件从业人员和软件企业的道德操......
  • 实验6 c语言结构体、枚举应用编程
    实验任务4程序源码1#include<stdio.h>2#defineN1034typedefstruct{5charisbn[20];//isbn号6charname[80];//书名7charauthor[80];//作者8doublesales_price;//售价9intsales_......
  • CodeGeeX智能编程
    一、写在前面大家遇到代码不会的问题,本能的就会去求助chatGPT,但是没有梯子的话,chatGPT是不是也帮不上忙了?秉着白嫖的精神,分享给大家一款非常牛的插件CodeGeex。二、CodeGreex简介CodeGreex支持多种主流IDE,如VSCode、IntelliJIEAD、PyCharm、vim等,同时支持Python、java、C++/C......
  • 实验6 C语言结构体、枚举应用编程
    一、实验目的二、实验准备三、实验内容四、实验结果1.实验任务4源代码:1#include<stdio.h>2#defineN1034typedefstruct{5charisbn[20];//isbn号6charname[80];//书名7charauthor[80];//作者8......
  • 探索AI在CRM中的潜力:智能化客户关系的构建
    AI人工智能在CRM系统中的应用有:赋能内容生产、客户服务支持、赋能品牌推广、自动化业务流程、数据分析、辅助科学决策、给出最佳客户联系时间。合理运用CRM系统中AI人工智能助手可以让团队工作事半功倍。1.内容生产市场营销活动离不开内容生产,持续的产出高质量的内容又给营销团......