作为一名程序员,如何写出一手让同事膜拜的漂亮代码?

这篇具有很好参考价值的文章主要介绍了作为一名程序员,如何写出一手让同事膜拜的漂亮代码?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 整洁的代码

  • 有意义的命名

    • 函数命名

    • 变量命名

  • 函数的定义

  • 注释的规范

  • 代码的长度

  • 代码的对齐

我写代码已经有好几年了,最近看了一本书叫做《代码整洁之道》。我发现这本书中介绍的一些内容对我来说非常有启发性。书中提到的一些方法和技巧让我重新审视了自己的代码风格,让我更加注重代码的可读性和可维护性。例如,书中提到了如何给变量和函数命名,编写注释和文档,以及如何避免代码重复等等。这些技巧和方法都非常实用,我会在今后的编程工作中尽可能地应用它们来提高我的代码质量。 

整洁的代码

来让我们思考一个问题,什么样的代码才算是好代码?

关于这一点我大概整理了一些自己的看法,罗列了之后如下所示:

准确性

可以通过测试用例,满足具体应用场景。

简介性

没有重复性的代码,简洁明了,没有过多的繁琐类的封装,函数,方法。

看到这里,你可能会想,说起来很能理解,但是实际工作中又该如何注意呢?别急,我们来看下边这个反面案例:

 作为一名程序员,如何写出一手让同事膜拜的漂亮代码?

这段代码是早期我在工作时所写的一段支付代码,在进行支付之前,先判断购物车里的商品库存是否充足,如果充足则进行扣减操作。但是现在回过头来看这段代码,你就会发现存在一些问题。

  • 代码优化分析 首先上边的代码在业务含义上并没有什么的问题,不过我们可以在代码的精炼程度 上进行一些优化。

对于参数校验,购物车校验,库存校验 ,其实我们都可以加入一些类似于断言组件之类的设计进行优化。

另外一些对象构建的代码其实可以做一些封装,因为调用这个接口的同事大多数时候都不会太愿意去关心这些参数的构造过程,更多时候我们只需要将它封装起来,然后通过一个函数的名字来告诉使用者就可以了。

进行优化之后的代码可以变成如下所示:作为一名程序员,如何写出一手让同事膜拜的漂亮代码?

有意义的命名

函数命名

有的时候,我们对于函数的命名会有出现“名不副其实”的情况,例如下边这个案例:

 作为一名程序员,如何写出一手让同事膜拜的漂亮代码?

这段代码中,返回的类型是Map类型,但是函数的命名却以List结尾,这样就给人有误解的意思。如果函数的名字没法给人很好的易读性,就需要开发者再花费额外的时间趣深入理解,这就会显得很费劲。再看下边这个案例:作为一名程序员,如何写出一手让同事膜拜的漂亮代码? 

在这个函数里面,会自动生成一个随机数组,但是数字的值如果是负数,则会自动变为0。但是为什么我们不在函数命名中进行定义呢?例如定义命名为:getNonnegativeArr(int len), 这样不是更好理解函数的意思嘛。

变量命名

对于函数变量的命名不要使用0或者o,1或者l很容易让人看混,另外变量或者参数的命名也尽量使其具有意义,例如下边这个案例所示:

 

例如这个案例中,参数命名采用了list1,list2,就很让人容易误解,不知道哪个参数是源集合,哪个参数是需要被比较的子集合。如果我们对它进行一些优化,看起来的效果就会明显不同,例如:作为一名程序员,如何写出一手让同事膜拜的漂亮代码? 

使用好的变量命名可以让人清晰了解到这个变量的类型是什么样的,另外在定义一些具有特殊含义的变量时候可以结合下具体的业务场景。例如下边这段代码,需要分别计算工作日 和 周末的订单流水金额总数,作为一名程序员,如何写出一手让同事膜拜的漂亮代码? 

其实在这里我们可以赋予一个特殊的业务命名来表示,例如下边这样的写法:作为一名程序员,如何写出一手让同事膜拜的漂亮代码? 

相对于上边的变量i,j写法,这种具有业务含义的变量命名更加能让人明确它的具体含义。

函数的定义

函数的命名

函数的命名尽量保证一个函数只做一件事的原则,不要参杂过多的其他业务操作。

函数的参数个数

通常参数的个数建议最多设置在3个左右,如果参数过多容易让人看了有误解,此时可以尝试用一些类去进行封装。

函数的参数命名

对于有共同含义的参数,我们可以将它命名到同一个变量中,这样能够通过业务领域去定义他们,方便识别。

对于参数的命名可以结合一些工作术语,例如当我们需要定义一个队列参数的时候可以定义JobQueue。

再来看下边这个案例,我们定义了一个用户基础属性类:

 

在这个案例中的name,number,street,city字段分别表示了用户所居住的信息,但是如果我们不加以注释或者没有了解的同事和使用者预先说明的话,这些字段的具体含义是很难看出来的。这种时候我们可以尝试给它加上一些特殊的业务前缀来表示,例如下边两种写法:作为一名程序员,如何写出一手让同事膜拜的漂亮代码? 

不过更好的表示方式还是单独设计一个对象来存储这些具有明确业务含义的对象,例如定义一个Address对象来管理它们,例如下边所示:作为一名程序员,如何写出一手让同事膜拜的漂亮代码? 

注释的规范

不要太依赖于注释

关于代码注释方面,相信工作了一段时间的开发都会有以下想法:不太相信代码注释所写的内容。为什么会有这样的想法呢? 我感觉主要原因还是和代码的不断迭代有关,随着代码的不断改动,其内部的流程早已经和注释表达的含义背道而驰。所以有时候我们代码注释的意义并不是特别大。

有时候如果代码注释和核心内容不符的时候,它反而成了一段“谎言”的存在。所以我认为:唯一真正好的注释是你要想办法去不用写注释。

别写废话注释

在我早期工作的时候,这个点确实经常会犯,例如定义一个对象的时候,我几乎会给每个字段都加入一行注释,例如下边这个类:

 

虽然说给每个字段都备注了注释,看起来也似乎很规范,但是这样的做法反而给人感觉写了一堆废话。通过每个字段的命名来看,难道它们还能有别的意思嘛?而且时间久了,别人看到这些无用的注释之后也会自动过滤掉它们的含义。

代码的长度

通常我们定义的一个类,其包含的代码量不建议设计得太大,大部分都浓缩在500行以内这个范围就好了。这是因为通常短的内容会比长的内容更方便让人理解,这就好比现如今的人更喜欢刷短视频,但是对于一些长达几十分钟或者几个小时的短片/电影却没有那么感兴趣。

除了好阅读之外,在实际工作中,大家如果使用的电脑配置不高,在电脑运行了很久的情况下再去用编辑器去修改一些篇幅非常大的类,反而会塌瘪慢。(我试过用Idea打开一份3000+行数的代码文件,挪动一格光标大概会有1秒的延迟)

另外,也并不是说代码的长度越短越好,有时候适当的空格与换行可以增加代码片段的可读性。

代码的对齐

在编写代码的时候,对于变量的对齐格式不同,其实也是有讲究的。来看下边两组不同代码的书写风格:

变量的名称统一对齐:作为一名程序员,如何写出一手让同事膜拜的漂亮代码?

变量的类型统一对齐:作为一名程序员,如何写出一手让同事膜拜的漂亮代码? 

在工作中,我更加会倾向于使用第二种书写格式,因为它给我的感觉会让人更加清晰看到对应变量的格式类型是怎样的。而对于第一种类型而言,给人感觉对于变量的类型不是那么地关注。

你们有哪些很好的代码习惯,欢迎分享。

 文章来源地址https://www.toymoban.com/news/detail-433556.html

 

 

 

 

 

 

 

 

到了这里,关于作为一名程序员,如何写出一手让同事膜拜的漂亮代码?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • chatGPT4问世,作为一个程序员应当如何去理解?

    前几年 AI 发展也遇到过许多瓶颈,甚至很多AI投资者因为技术得不到突破而破产。但近几年AI技术飞速发展,特别是今天的主题chatGPT 第一次问世还只是一个帮学生写作业的工具,第二次迭代即可完成大部分市场业务,回答很多刁钻的问题。 有人测试过问chatGPT一些很难以回答

    2023年04月10日
    浏览(50)
  • 【做一名健康的CSDNer】程序员哪几种行为最伤肾(程序员必看)

    虽然没有专门针对程序员这一职业群体特有的伤肾行为的研究报道,但根据一般人群的健康风险和生活习惯,程序员由于其特殊的工作模式和环境,可能更容易出现如下伤肾的行为: 熬夜加班 : 程序员由于项目进度、bug修复等原因,常需长时间熬夜工作,而长期熬夜会导致

    2024年04月23日
    浏览(37)
  • 程序员搞副业经验分享:卖书、做网课,探秘前同事的经验之谈

    为了更深入了解程序员如何进行创收,今天与一位曾在几年前成功通过卖书和网课获取收益的前同事进行了交流。由于他曾有过丰富的经验,我向他请教了一些相关经验,以下是我想获取的信息: 你目前还在通过做网课获得收益吗? 没有。不再从事网课的主要原因有两点:

    2024年03月09日
    浏览(56)
  • 作为程序员,你很有必要了解一下IVX

    iVX 是一个“零代码”的可视化编程平台,拥有方便的在线集成开发环境,不需要下载开发环境,打开浏览器即可随时随地进行项目编辑。iVX 还拥有“一站式”的云资源,通过这一套一站式服务,iVX 可以实现一站式研发、一站式部署、一站式维护。iVX相当于“一款零代码可视

    2024年02月15日
    浏览(45)
  • 作为一个程序员一定要掌握的算法之遗传算法

    目录 一、引言 1.1 目的 1.2 意义 二、遗传算法介绍 2.1 遗传算法的基本思想 2.2 遗传算法与其他算法的主要区别 2.3 基于Java的遗传算法设计思想 三、遗传算法的具体实现 3.1 系统功能模块图和说明 3.2 代码和说明 3.2.1 初始化 3.2.2 选择运算 3.2.3 交叉运算 3.2.4 变异运算 3.2.5 主函

    2024年02月15日
    浏览(45)
  • 【作为程序员,你有什么让人眼前一亮的代码实现方式?】

    随着科技的不断发展,编程语言也在不断更新和改进。作为程序员,我们需要选取一种适合自己的高级编程语言来完成项目任务。下面将介绍常见的三种高级编程语言:Python、Java和C++。 Python Python是一种高级编程语言,具有简单易学、可读性强、效率高等特点。它广泛应用于

    2024年02月06日
    浏览(37)
  • 什么?作为程序员你还不知道人工智能搜索引擎?

    作者 :明明如月学长, CSDN 博客专家,蚂蚁集团高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《EffectiveJava》独家解析》专栏作者。 热门文章推荐 : (1)《人工智能时代,软件工程师们将会被取代?》 (2)

    2024年02月10日
    浏览(61)
  • 【Github】作为程序员不得不知道的几款Github加速神器

    众所周知,近几年国内用户在访问 Github 时,经常间歇性无法访问 Github 。 接下来推荐几款 作为程序员不得不知道的 Github加速神器 。 FastGithub 是一款 Github 加速神器,解决github打不开、用户头像无法加载、releases无法上传下载、git-clone、git-pull、git-push失败等问题。 它支持多

    2024年02月12日
    浏览(41)
  • 「必学算法」- 作为一个程序员,你一生中必须掌握的几种算法

    作为一个程序员,学习算法是不可避免的一个过程。算法不仅可以提高编程能力,也可以让我们更好地应对各种实际问题。在实际编程过程中,我们经常会用到一些常见的算法,这些算法具有广泛的应用,掌握它们对提升编程能力和解决实际问题非常有帮助。 下面列举了一些

    2024年02月17日
    浏览(57)
  • 新技术越来越多,作为程序员,我们应该怎么规划职业生涯? | 社区征文

    随着科技的不断进步,新技术不断涌现,对程序员的要求也在不断提高。作为一名程序员,要想在这个竞争激烈的行业中立足,就需要制定一份明确的职业规划,不断学习和掌握新技术,提升自己的职业能力和竞争力。 首先,程序员需要明确自己的职业方向和目标。程序员的

    2024年02月06日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包