前言

最近代码的规范和书写成为许多公司的关注点, 因为一个设计感良好, 工整的代码, 才利于维护和阅读, 每次看到有了年头还乱糟糟的代码, 就仿佛看到一坨

最近看书有许多心得, 向公司大佬请教过后, 发现优雅的代码总是有几个共同点:

  1. 代码工整

    这应该是最基本的点, 现在有很多IDE提供了代码整理功能

    如:IDEA快捷键 Ctrl+Alt+L

  1. 代码简洁

    在我的理解简洁就是,用最少的代码来实现功能,就是不要有多余的代码,但也不能过渡追求代码的数量, 该写的还是要写, 要考虑设计性和未来的变化。

    前一阵在公司就发生了一件超出我认知范围的事, 我们老大在 check 代码的时候, 发现一个新来的小伙子 一个select方法写了将近300行代码, 当时老大说完 我们都蒙了 真想不出来他是怎么做到的, 后来我们老大 看着他改最后实现这个功能只用了 30多行代码。


还有一点就是不要过于追求简介, 有的同学喜欢Lambda, 能写的地方都要用上, 能链式调用我绝不接收变量, 但是我发现链式调用超过3个方法的时候, 可读性就会变得极差。
如这段代码, 懂得人懂, 不懂的人, 这尼玛就是天书啊

 list.stream().distinct().collect(Collectors.toList()).forEach(System.out::println);
  1. 设计

    设计在我看来 有关于现有功能实现的设计, 也要有对未来功能整合升级的设计, 在设计一个系统时, 目标应该是找到或创建某些类, 其中每个类都有具体的用途, 而且既不会太大(包含太多功能而难以复用), 也不会太小(不添加其他功能就无法使用)。如果类过于复杂,可以考虑将现有类拆分为更小的类。

    在我们设计一个系统时, 就应该认识到程序开发其实是一种增量过程, 犹如人类学习一样, 这一点很重要。如果将项目视作一种有机的, 进化的生命体去培养, 那我们的项目就会越来越健壮 迅速, 反之一味地追求速度 快速见效, 那我们的代码就可能像一座危楼, 一碰就塌。

  2. 注释

    注释分为两种:

    信息注释: 信息注释就是 这个方法的作者信息, 创建时间, 入参返回值等。
    功能注释: 这个方法的作用, 这个类的作用。

    符合JDK注释规范的注释在IDE中鼠标悬浮在方法名上即可查看该方法的注释信息

  3. 命名

    命名也是一个重要的问题, 好的命名可以增加可读性, 最好的命名就是见名知意。

    英文命名把方法的中文名翻译成英文。

    业务命名按照业务的拼音首字母来命名(一般用于包名 项目名 实体名)。

    还有就是命名的书写规范:

  4. 工具

    个人推荐Checkstyle因为上家公司使用的就是这个, 规范性真的很严格, 不符合规范连包都打不了。

    Checkstyle可帮助程序员编写符合编码标准的 Java 代码。它使检查 Java 代码的过程自动化,从而使人们免于执行这项无聊(但很重要)的任务。这使其成为想要强制执行编码标准的项目的理想选择。

    Checkstyle 是高度可配置的,可以支持几乎任何编码标准。 提供了支持Sun 代码约定、 Google Java 风格的示例配置文件 。

    CheckStyle官网

    其他博客:

    代码规范利器-CheckStyle

    代码规范利器-阿里代码规范插件

  5. 审美

    其实审美这个就有点玄学了, 但是总有人会说, 代码如何写的优雅 如何令人赏心悦目但是这些词语都源自于美学, 但人类之间的审美通俗的说就是 看脸, 那代码的审美看什么呢, 代码又没有脸, 其实人类之间的审美很复杂的 身材 五官的比例 穿着 都是在审美条件之中的。

    代码的审美在我的理解就是 比例布局

    比例

    关于代码的长度, 因为如果代码行过长的话, 这样查看起来就很麻烦, 查看代码需要不停的拖动, 而且代码一行长一行短也会造成视觉上不平衡, 影响美观。

    还有就是每个人的显示器可能尺寸不同, 显示器大的人可能会把行代码写的长一些, 但是到了显示器小的电脑上就会出现过长的问题, 所以代码的每一行长度不宜过长。

    根据我个人经验来看 每行代码的长度在 80 - 120 之间最为合理。

    布局

    空行起着分隔程序段落的作用。空行得体(不过多也不过少)将使程序的布局更加清晰。

    方法的排序 方法可以按访问权限进行排序, public -> private 这样当其他人从public看到private方法时就可以停止观看, 因为private方法属于内部封装, 我们开发程序只需要关注public方法 或private权限之上的方法。

总结

其实在我看来代码规范现在没有具体的明确定义, 因为这个东西很像审美, 审美就会有趋势, 有潮流 但是基本的代码规范还是要有的, 但也不用刻意的追求, 因为潮流是没有尽头的。
有绝活才是王道, 能力 实力 影响力更重要, 有人会说JDK的源码不规范吗? 有人会说Spring的源码不规范吗?
可能会有 但在大部分人眼里 这些源码已经写的很好了, 我是觉得写的很好, 因为我就是那个大部分人

如何写出优雅的代码 吐血整理相关推荐

  1. 程序员如何写出优雅的代码?

    作者 | 老峰 责编 | 郭芮 一直以来,关于"代码规范"的话题都备受关注,业界甚至有很多流传甚广的段子不断调侃之.既然代码规范能引起这么大的共鸣,那么今天我们谈谈一个程序员的自我 ...

  2. 谈代码整洁之道,如何写出优雅的代码

    最近为了制定团队的代码规范,拜读了鲍勃大叔的<代码整洁之道>,读完之后,在如何写出整洁优雅的高质量代码方面有很大的启发.我认为<代码整洁之道>是我们提高编程能力和自我修养必读之 ...

  3. 优雅写mysql_如何写出优雅的代码?

    我 18 年在 PyCon 做过一次类似的分享 ,目的是如何写出优雅的代码.希望能部分回答这个问题,也希望与大家多多讨论.<聊聊编程原则>​zhuanlan.zhihu.com 要成为合格 ...

  4. 如何写出优雅的代码?

    希望你的代码如同你本人一样优雅.:) 我们编写的代码,除了用于机器执行产生我们预期的效果以外,更多的时候是给人读的,这个读代码的可能是后来的维护人员,更多时候是一段时间后的作者本人. 如何能够写出优雅 ...

  5. Android开发如何写出优雅的代码

    很多时候我们去面试,人家总会问一个问题,你们公司开发一个app是如何进行技术选择的,app中涉及到了哪些开发模式,谈谈你对mvc.mvp和mvvm的区别.或许在这些问题上每个人有每个人的看法,在我看来 ...

  6. 成为一名优秀的程序员,写出优雅的代码,要看哪本书?

    你是否曾为糟糕的代码所深深困扰?如果你是位有点儿经验的程序员,定然多次遇到过这类困境.我们有专用来形容这事的词:沼泽(wading).我们趟过代码的水域.我们穿过灌木密布.瀑布暗藏的沼泽地.我们拼命想 ...

  7. 前端写出优雅的代码,融会贯通es6

    提交自身能力必备 async handFn () {const getLogin = () => {}// 1if (this.Val) return console.log('a是大于0的') ...

  8. 如何写出优雅的 Golang 代码

    Go 语言是一门简单.易学的编程语言,对于有编程背景的工程师来说,学习 Go 语言并写出能够运行的代码并不是一件困难的事情,对于之前有过其他语言经验的开发者来说,写什么语言都像自己学过的语言其实是有问 ...

  9. (三)改掉这些坏习惯,还怕写不出优雅的代码?

    Code Review 是一场苦涩但有意思的修行. 书接上篇,本次一起继续探讨一下,该如何写出优雅的代码? 1. 编码时:搞的复杂并不好  坏习惯一:多余的 if/else. 反例: 类似上面这种写法 ...

最新文章

  1. windows 连Linux,Windows下访问Linux资源
  2. 操作Docker容器
  3. Alcatel 6850实现静态路由
  4. php 使用postfix发邮件,PHP处理postfix邮件内容的方法
  5. 牛客网选择题之linux
  6. 从RGB到Lab色彩空间的转换
  7. LeetCode算法入门- Longest Substring Without Repeating Characters-day4
  8. code128条码c语言,C#生成code128条形码的方法
  9. rabbitmq消息保证幂等的消息设计
  10. 悦读上品 得乎益友
  11. 揭秘偷渡史,福建最疯,全村一半人都出国了
  12. vue下载二进制流图片
  13. 《15个提高Google搜索的技巧》
  14. STM32 hal库串口空闲中断最新用法
  15. 开启HSTS让浏览器强制跳转HTTPS访问
  16. 消息称光宇华夏管理层调整 CEO高苏华萌生退意
  17. HTML网页设计期末课程大作业 :汽车网页——宝马轿车 6页 带背景音乐 学生网页设计作业HTML+CSS+JavaScript学生网页课程设计期末作业下载
  18. 前端架构 101(六):整洁(Clean Architecture)架构是归宿
  19. Maven下的Mybatis基本配置和使用
  20. 电信4G添加ctlte接入点提高网速

热门文章

  1. 老板这种生物:只看结果,不问过程
  2. 信息架构需要绿色整合
  3. 机器人瓦力材质库下载_机器人总动员 4K蓝光原盘下载+高清MKV版/ 大空奇兵·威E(港) / 瓦力(台) 2008 60.4G...
  4. 远程预付费系统在建设公寓民生保障项目的研究与应用
  5. EnCase Computer Forensics, includes DVD: The Official EnCE: EnCase Certified Examiner Study Guide
  6. XXE(XML外部实体注入)详解
  7. 初始化Sourse中Table
  8. RSA非对称加密核心算法
  9. 小刀学习flink 之入门 hello word
  10. C++性能优化(九) —— TCMalloc