写一些友好的代码(上),对人友好

2023-10-21 22:50
文章标签 代码 友好 对人

本文主要是介绍写一些友好的代码(上),对人友好,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

写一些友好的代码(上),对人友好

这是一篇关于程序员的一个最基本条件的文章——编码。也是我学习虚拟机之后最大感触的一些内容。

作者:小米(lvgocc)

公众号:星尘的一个朋友

前言

正文之前,还是想强调一下今天关于编码的分享,要 区别 “好” 与 “友好”。毕竟还是有差距。就像好的论文、好的书籍,专业性很强,内容质量很高。但它并不一定是友好的,就像现在大多数人在写作都在追求 “通俗易懂”,这就是友好。他们这些人负责把难理解的内容消化掉然后换一种方式来表述出来,同时尽可能的不丢失原来的“本色”。这样的内容就是友好的,同时它也一定是好的。(这个一定,可以通过反证法得出)

正文

今天分享的主题是 “对人友好的代码”。希望看过文章的朋友们,能够有所收获。

关于编码,我想这应该是程序员最熟悉不过的事儿了。也是作为一个程序员最基本的职能了,而恰恰是最常做的事,最容易产生自信。而这种自信,有时便会成为理所应当的坏习惯。

对人友好

对人友好的代码怎么理解?

在很多时候,比如公司内部代码走查、阅读开源代码,甚至看自己写过的代码。都会有一种冲动,什么冲动?重构的冲动!

我想,有这种想法的人肯定不止我一个。首先我很肯定,有这种想法的人,都是想要写出更加优秀的代码的人。但事实上呢?是不是很多时候是因为别人的代码不如你意呢?又或者只是单纯的觉得这样写就是不合适,原因不知道?。不管怎么说,我还是认为有这种想法的开发人员是很好的。

vant 演示中 dialog 的截图 | 写一些友好的代码 作者:小米 公众号:星尘的一个朋友

好的代码?友好的代码?

我要写一手好的代码!这个问题我也经常在敲代码的时候在想。可事实你想写出好的代码并没那么容易,既然我写不出来好的代码,那我能不能写出一些对人友好的代码? 我想这应该就是我能写出来好的代码的第一步吧。所以我从写出一些友好的代码下手了。

我认为对人友好的代码

对人友好的代码实在是太多了,我列一些自己随便想到的一些,算是抛砖引玉,希望能够和更多人产生友好的代码共鸣。

首先一定要能读

最基本的对人友好,就是代码不要看起来很脏,给人一种不能够阅读的感觉。下面举个不可阅读的例子

不可阅读代码 | 写出一些友好的代码 作者:小米 公众号:星尘的一个朋友

这种代码我亲身经历在线上版本见到过

对人友好的代码基本条件,能读。

其次,不要让人误会

让人误会的代码 | 写出一些友好的代码 作者:小米 公众号:星尘的一个朋友

仔细看,这里的 ① 和 ② 是不在一个条件中的。同事因为这种写法,出过生产问题。当时他说代码没问题叫我帮他看看。说实话,当时挺懵的。

三,不要做复杂分支的判断鬼才

例子为最基本示意例子,实际情况判断中或更为复杂

复杂 的逻辑分支判断这一点,我想应该是最常见。因为前面两个完全可以通过 IDE 帮你规避,不过这一点,稍不留意,就会变得有点放肆了。

        // A B C 条件同时满足if (A && B && C) {}if (!A || !B || !C) {}

在开发组内我一直强调的就是,在 复杂 逻辑判断要简单而且使用正向思维。就是多用与,少用或非,注意是少用,不是不允许用。能用与就用与,能不用非就不用非。因为这更能提高理解速度。特别是在一些 复杂 的逻辑判断分支中。

同时,如果分支内容判断条件过多时,建议拆解。比如

        if ((A != AA || A != AB ) && B && C) {}

可替换为

        boolean a = A != AA || A != AB;if (a && B && C) {}

关于 复杂 分支的判断的关键点就在于理解,所谓对人友好,就是让人很快就能看明白你代码的意思。这就需要根据实际的逻辑语境做一些合理的判断写法了。

下面随便列了一个逻辑判断的代码,简单感受一下。

        int age = 0;// 0 male 1 female 2 demaleint gender = 0;int height = 0;int weight = 0;// 筛选出 年龄大于 18 小于 60 , 非人妖, 身高 140 以下, 体重80 以下的人if (age > 18 && age < 60 && gender != 2 && height > 140 && weight > 80) {// 合格人}if (!((age < 18 || age > 60) || gender == 2 || height < 140 || weight < 80)) {// 合格人}boolean ageFlag = age > 18 && age < 60;boolean genderFlag = gender != 2;boolean heightFlag = height > 140;boolean weightFlag = weight < 80;if (ageFlag && genderFlag && heightFlag && weightFlag) {// 合格人 }

四,迷惑行为少一点

前方迷惑代码高能预警,以下代码为项目真实代码。请不要对号入座!请不要对号入座!请不要对号入座!

存了个寂寞

存了个寂寞|写出一些友好的代码 作者:小米 公众号:星尘的一个朋友

不清楚它要做什么,思来想去,应该只是来浪费了我代码审查的时间,怕我没事做,为我增加工作量。

任性换行

随性换行与日志框架技术不了解|写出一些友好的代码 作者:小米 公众号:星尘的一个朋友

这换行符我说了算,我觉得它该换行了。免疫 IDE 警告。

截取寂寞

截取寂寞|写出一些友好的代码 作者:小米 公众号:星尘的一个朋友

免疫 IDE 警告+1。

异常自己也没想到会这样

对于异常,我最了解|写出一些友好的代码 作者:小米 公众号:星尘的一个朋友

如果你看不懂这段操作,请关注我。一起讨论一下这件关于异常处理怎么写能写飞这件事。还有,到底还要怎么样才能会用日志框架?

谢大国的媳妇,香秀

彪悍的人生,不需要太多解释|写出一些友好的代码 作者:小米 公众号:星尘的一个朋友

免疫 IDE 警告+1。

友好的代码

回到我们的主题,对人友好的代码,还是上面那句话,对人友好的代码实在是太多了!我想,任何一个程序员都可以写出对人友好的代码,就看你想不想去写。试想你自己写的代码,过了几个月回去看,心里喷了半天结果一看作者是自己。这就很尴尬了。对人友好的代码它可能并不一定是最好的代码,但最起码是认真写的代码,这将会是写出好代码的第一步,希望大家都能迈出去。

关于编码,我想这应该是程序员最熟悉不过的事儿了。也是作为一个程序员最基本的职能了,而恰恰是最常做的事,最容易产生自信。而这种自信,有时便会成为理所应当的坏习惯。

其实关于对人友好的代码并不是技术上的话题,我觉得这更像是社交上的话题,程序员可能会习惯通过你的代码来了解你这个人。至少我有这样的一点小习惯。见码如见人。

写在最后

最后用 vant demo 中的话结个尾吧:代码是给人看的,附带可以在机器上运行。

正文完


欢迎关注我,微信搜索 lvgocc 或者 星尘的一个朋友,我是小米,下一篇分享 【写一些友好的代码(下),对机器友好】。谈谈如何面向虚拟机编程,写出对机器友好的代码。

这篇关于写一些友好的代码(上),对人友好的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/257479

相关文章

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Java中Map.Entry()含义及方法使用代码

《Java中Map.Entry()含义及方法使用代码》:本文主要介绍Java中Map.Entry()含义及方法使用的相关资料,Map.Entry是Java中Map的静态内部接口,用于表示键值对,其... 目录前言 Map.Entry作用核心方法常见使用场景1. 遍历 Map 的所有键值对2. 直接修改 Ma

深入解析 Java Future 类及代码示例

《深入解析JavaFuture类及代码示例》JavaFuture是java.util.concurrent包中用于表示异步计算结果的核心接口,下面给大家介绍JavaFuture类及实例代码,感兴... 目录一、Future 类概述二、核心工作机制代码示例执行流程2. 状态机模型3. 核心方法解析行为总结:三

python获取cmd环境变量值的实现代码

《python获取cmd环境变量值的实现代码》:本文主要介绍在Python中获取命令行(cmd)环境变量的值,可以使用标准库中的os模块,需要的朋友可以参考下... 前言全局说明在执行py过程中,总要使用到系统环境变量一、说明1.1 环境:Windows 11 家庭版 24H2 26100.4061

pandas实现数据concat拼接的示例代码

《pandas实现数据concat拼接的示例代码》pandas.concat用于合并DataFrame或Series,本文主要介绍了pandas实现数据concat拼接的示例代码,具有一定的参考价值,... 目录语法示例:使用pandas.concat合并数据默认的concat:参数axis=0,join=

C#代码实现解析WTGPS和BD数据

《C#代码实现解析WTGPS和BD数据》在现代的导航与定位应用中,准确解析GPS和北斗(BD)等卫星定位数据至关重要,本文将使用C#语言实现解析WTGPS和BD数据,需要的可以了解下... 目录一、代码结构概览1. 核心解析方法2. 位置信息解析3. 经纬度转换方法4. 日期和时间戳解析5. 辅助方法二、L

Python使用Code2flow将代码转化为流程图的操作教程

《Python使用Code2flow将代码转化为流程图的操作教程》Code2flow是一款开源工具,能够将代码自动转换为流程图,该工具对于代码审查、调试和理解大型代码库非常有用,在这篇博客中,我们将深... 目录引言1nVflRA、为什么选择 Code2flow?2、安装 Code2flow3、基本功能演示

IIS 7.0 及更高版本中的 FTP 状态代码

《IIS7.0及更高版本中的FTP状态代码》本文介绍IIS7.0中的FTP状态代码,方便大家在使用iis中发现ftp的问题... 简介尝试使用 FTP 访问运行 Internet Information Services (IIS) 7.0 或更高版本的服务器上的内容时,IIS 将返回指示响应状态的数字代

MySQL 添加索引5种方式示例详解(实用sql代码)

《MySQL添加索引5种方式示例详解(实用sql代码)》在MySQL数据库中添加索引可以帮助提高查询性能,尤其是在数据量大的表中,下面给大家分享MySQL添加索引5种方式示例详解(实用sql代码),... 在mysql数据库中添加索引可以帮助提高查询性能,尤其是在数据量大的表中。索引可以在创建表时定义,也可

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元