如何判断代码的好坏

2023-11-19

对于代码好坏的判断,是需要一定的标准来衡量。比如可读性,可维护性,可拓展性,简洁性等等,

好的代码,无论是对于代码开发者来说,还是对于设备维护者来说都是赏心悦目的,而坏的代码则是让人一头雾水,心生胆怯。甚至在开发和维护阶段,因为修改或者重构代码需要花费很多的时间,进而不愿意冒这个风险,最终会导致代码越来越烂,越来越拖沓。

下面就是好的代码,和坏的代码进行举例说明:

// bad
if (a === 'a') {
    b = a
} else {
    b = c
}

// good
b = a === 'a' ? a : c

通过上面的示例可以看出,好的代码能给人愉悦的心情,坏的代码,虽然也可以实现对应的功能,但是不够优雅和从容。

1. 可读性:

可读性最直白的理解就是可以读,能否符合编码规范,是否可以见文知义,函数的长度是否合适,模块是否清晰,是否符合高内聚以及低耦合的特征。对于注释,这个见仁见智。我的理解是如果命名各方面都比较具体,函数的划分也比较合理,代码本身就是能够体现程序的意图,进而不需要注释。

2. 可维护性

可维护性,是指代码经得起维护,或者说便于维护。因为我们知道代码的维护成本占到开发成本的60%左右,维护这样大成本,除了软件功能复杂外,还有一部分原因是软件在设计之初,并没有考虑维护性的处理,文档是否完整和详尽,以及代码是否注重高内聚和低耦合的原则,这样设计的好处时,不至于出现问题后,修改问题,牵一发而动全身, 改一个问题,又引起其他潜在的问题。

3.可拓展性

这么多年来,我觉得switch是一个好的关键词,在增加新的判断条件时,并不需要修改原有的代码逻辑,只要在case之后,增加新的判断条件即可.当然也有一些开发模式也非常具有拓展性,比如工厂模式。这里涉及到开闭原则,

开闭原则
“开闭原则,在面向对象编程领域中,规定“软件中的对象(类,模块,函数等等)应该对于扩展是开放的,但是对于修改是封闭的”,这意味着一个实体是允许在不改变它的源代码的前提下变更它的行为。该特性在产品化的环境中是特别有价值的,在这种环境中,改变源代码需要代码审查,单元测试以及诸如此类的用以确保产品使用质量的过程。遵循这种原则的代码在扩展时并不发生改变,因此无需上述的过程。”

 

4. 简洁性

简洁性,就是简单明了。在实现功能的同时,尽可能代码简单和清晰,一个函数只实现一个功能。

思从深而行从简。真正的高手能云淡风轻地用最简单的方法解决最复杂的问题。这也是一个编程老手跟编程新手的本质区别之一。下面的示例:

让我们看一个示例。如下图所示,从A至B,如何走。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何判断代码的好坏 的相关文章

  • cad隐藏图层命令快捷键_教你学会天正CAD局部隐藏对象技巧

    天正局部隐藏命令 JBYC 即局部隐藏的拼音首字母 其命令全称为TMKHIDE 适用于所有天正软件 建筑 电气 给排水 暖通 天正建筑的工具界面中是有此菜单的 且默认快捷键4为局部隐藏 6为恢复可见 其他软件并未显示 需要通过命令输入使用
  • 基于conda的相关命令

    conda 查看python版本环境 打开Anaconda Prompt的命令输入框 查看自己的python版本 conda env list 激活相应的python版本 环境 conda avtivate python 3 9 若输入以下
  • 我在工作中是如何使用【Linux】的

    目录 前言 一 常用命令 二 文件和目录处理 三 用户与组管理命令 四 进程管理命令 五 网络管理命令 六 帮助命令 七 磁盘管理 前言 大家好 这是我首篇博客 内容是linux工作需用到的内容 在这里我给大家总结出来了 希望多支持支持 感
  • 【Hello mysql】 mysql的事务

    Mysql专栏 Mysql 本篇博客简介 介绍mysql的事务 mysql的事务 事务的概念 事务功能测试 事务的隔离级别 如何理解隔离性 粗浅理解 隔离级别 查看和设置隔离级别 四种隔离级别详解 读 未提交 读 提交 可重复读 串行化 一
  • 6月17日实验课之“H.264文件解析”

    文章目录 1 实验要求 2 实验结果 2 1 SPS 2 1 1 profile idc 2 1 2 level idc 2 1 3 seq parameter set id 2 1 4 log2 max frame num minus4
  • jmeter+接口测试练习+接口关联+Json提取

    1 测试用例设计 2 因为要执行多条用例 所以在Jmeter添加了http信息头管理器和http请求默认值 3 查询用户信息接口需要用到登录的token 但要先登录再把token拿出来传到查询的信息头里 会出现登录信息已过期的提示 考虑用j

随机推荐

  • 从0开始写Vue项目-Vue页面主体布局和登录、注册页面

    1 从0开始写Vue项目 环境和项目搭建 慕言要努力的博客 CSDN博客 2 从0开始写Vue项目 Vue2集成Element ui和后台主体框架搭建 慕言要努力的博客 CSDN博客 一 主体布局 关于主体布局 我们刚开始肯定是做的死数据的
  • 考研数二第三讲 极限存在准则和两个重要极限和极限运算准则

    根据前面介绍的内容 具体推理数列以及函数的极限推理过程 在实际应用中极限的两大准则使用还是比较广泛的 大家需要多多关注 极限存在准则和两个重要极限 准则 I 夹逼准则 如果数列 xn yn zn 满足下列条件 证明 此函数分母的极限为 0
  • 稿费一般多少钱一千字_编写教材的稿费一般是多少

    我们知道编写教材是会受到一定的稿酬的 除了编写教材 还有图书 报纸 个人公开发表等等 公费出书都有可能获取一定的稿酬 那么稿酬是如何计算的呢 编写教材的稿费一般是多少 以下是根据 出版文字作品报酬规定 介绍了基本稿酬的标准 供大家参考 19
  • VUE项目中的全局格式化时间过滤器

    自定义格式化时间 一 问题 这是一个后台管理系统中的商品列表页 其中的时间这一项在调用接口后会发现是以毫秒来计算的 这样当然是不行的啦 要换算成我们日常使用的2020 04 07 17 13 这样的时间格式 二 解决办法 1 打开项目中的m
  • html5 比例尺,高德地图API之缩放比例尺控件+3D转换

    缩放比例尺控件 首先引入控件 amap scale 然后使用 map addcontrol 添加控件map margin 0 padding 0 list style none container width 100 height 100
  • Flutter 画板实现

    import package flutter material dart class DrawingBoard extends StatefulWidget override DrawingBoardState createState gt
  • Unity5.4.1与NGUI出现的问题Ignoring menu item NGUI because it is in no submenu!

    原文 http www tasharen com forum index php topic 14856 0 Hey Arenmook after upgrading to Unity 5 4 1 from 5 3 6p1 and upgr
  • 【CMake】教程:第2步 添加库

    CMake 教程 第2步 添加库 问题 当写的程序由多个模块组成 如何组织这些代码 以及如何利用模块代码生成的库呢 解答思路 编写模块代码 将模块代码生成库 编写调用程序 编译链接模块库 以求一个数的平方根为例 编写模块代码 MathFun
  • FreeRTOS任务基础知识

    多任务系统 对于单任务系统 每个任务的优先级都是相同的 多任务将一个大问题分成小问题 每个小任务完成的时间很短 看起来像同时完成 多任务系统通过任务调度器来安排任务优先顺序 FreeROTS根据是一个抢占式的实时多任务系统 高优先级的任务可
  • 保护您的企业数据免受.mkp勒索病毒:恢复加密数据库的关键策略

    引言 近年来 勒索病毒已经成为网络安全领域中最为恶劣和具有挑战性的威胁之一 它们通过加密用户的敏感数据 并勒索赎金来造成严重的经济和业务损失 91数据恢复研究院在本文将深入探讨一种名为 mkp的勒索病毒 并提供针对 mkp勒索病毒感染导致数
  • Unity+Pico 手柄按键控制

    一 定义手柄按键API 1 InputDevices GetDeviceAtXRNode 通过XRNode获取对应的设备 2 XRNode是一个枚举类型 包含LeftEye RightEye CenterEye Head LeftHand
  • 利用油猴脚本实现知网搜索自动选择核心期刊

    利用知网查询学术期刊默认选择全部期刊 而很多时候我们只希望找到SCI SSCI等核心期刊 每次都要手动勾选太麻烦 这里利用油猴写一个脚本自动点选想要查询的期刊 省去每次选择的麻烦 首先在浏览器中安装油猴插件 右键插件按钮选择 选项 打开油猴
  • 记:解决 Weditor 页面元素坐标定位不到、不准确的问题

    前言 这几天同事也在研究使用uiautomator2 之前安装一直都挺稳定没有啥报错 然后后面有换了一个uiautomator2版本 最后就使用Weditor 的时候就开始出现了Weditor 界面定位不到 不准确的问题了 如下图 解决思路
  • 智能文档比对小程序,支持扫描件比对、PDF比对,Word比对,合同比对、公文比对,限时免费使用

    很多企业在实际业务场景中 合同会反复修改 一份合同从无到有 需要经历洽谈 起草 签订 履行 变更等多个业务环节 合同文件既有电子版也有纸质版 各个环节存在大致内容类似但细节有差异的多个版本文档 企业不仅需要自动识别图像中的文本信息 将图片或
  • 2022年第十四届华中杯数学建模A题解题思路附代码

    A 题 分拣系统优化问题 某电商公司配送中心的工作流程分为统计汇总 转运上架 按订单分拣 核对打包等 步骤 其中 分拣环节操作复杂 耗时较长 其效率是影响配送中心整体性能的关键因素 首先 系统统计汇总出当天全部待配送订单所包含的所有货品及相
  • 军队文职(数学2+物理)——高等数学 7、导数的几何应用

    1 单调性与极值 设 f x 在 a b 内可导 若 则 f x 在 a b 内单调增加 减少 若 则 f x 在 a b 内单调不减 单调不增 极值 设函数 f x 在 a b 内有意义 是 a b 内的某一点 则如果存在一个点的邻域 使
  • 掌握 Android 自动化测试框架 UiAutomator & UiAutomator2

    掌握 Android 自动化测试框架 UiAutomator UiAutomator2 一 UiAutomator 简介 二 UiAutomator2 的诞生 三 UiAutomator2 的应用实践 总结 你是否曾经在进行 Android
  • 基于Matlab萤火虫算法优化订单分批问题

    基于Matlab萤火虫算法优化订单分批问题 订单分批优化问题是在供应链管理中常见的一个重要问题 涉及到如何合理地将一批订单分成若干个批次以最大程度地提高运输效率和降低成本 为了解决这一问题 我们可以借助萤火虫算法 Firefly Algor
  • 多线程环境下使用openssl

    openssl 官网说了 OpenSSL can safely be used in multi threaded applications provided that at least two callback functions are
  • 如何判断代码的好坏

    对于代码好坏的判断 是需要一定的标准来衡量 比如可读性 可维护性 可拓展性 简洁性等等 好的代码 无论是对于代码开发者来说 还是对于设备维护者来说都是赏心悦目的 而坏的代码则是让人一头雾水 心生胆怯 甚至在开发和维护阶段 因为修改或者重构代