揭秘!编写高质量代码的关键:码农必知的黄金法则!

文章目录

  • 一、保持代码的简洁与清晰
  • 二、遵循良好的命名规范
  • 三、注重代码的可读性
  • 四、利用抽象与封装
  • 五、遵循SOLID原则
  • 六、关注代码性能
  • 七、确保代码安全性
  • 《码农修行:编写优雅代码的32条法则》
    • 编辑推荐
    • 内容简介
    • 目录
    • 前言/序言


在这里插入图片描述

在编程的世界里,每一位码农都渴望编写出既高效又优雅的代码。优雅的代码不仅易于阅读和维护,还能提高开发效率和代码质量。本文将探讨编写优雅代码的黄金法则,帮助你在码农修行的道路上不断前行。

一、保持代码的简洁与清晰

  • 简洁至上:避免冗余代码,每个功能只实现一次。
  • 清晰表达:使用有意义的变量名、函数名和注释,让代码“自解释”。

二、遵循良好的命名规范

  • 使用描述性名称:确保变量、函数和类的名称能够准确反映其用途。
  • 遵循命名规范:如驼峰命名法、下划线命名法等,保持代码风格一致。

三、注重代码的可读性

  • 合理缩进:使用空格、制表符等保持代码结构的清晰。
  • 适当使用空行:将逻辑相关的代码块分组,提高可读性。

四、利用抽象与封装

  • 合理抽象:将重复的代码逻辑封装成函数或类,提高代码复用性。
  • 信息隐藏:只暴露必要的接口,隐藏实现细节,降低耦合度。

五、遵循SOLID原则

  • 单一职责原则:一个类只负责一个功能领域中的相应职责。
  • 开放封闭原则:对扩展开放,对修改封闭。
  • 里氏替换原则:子类必须能够替换其基类。
  • 接口隔离原则:客户端不应该依赖它不需要的接口。
  • 依赖倒置原则:高层模块不应该依赖低层模块,二者都应该依赖其抽象。

六、关注代码性能

  • 优化算法:选择合适的算法和数据结构,提高代码执行效率。
  • 减少资源消耗:合理使用内存、CPU等资源,避免不必要的浪费。

七、确保代码安全性

  • 输入验证:对用户输入进行严格的验证和过滤,防止注入攻击等安全问题。
  • 加密技术:使用加密算法保护敏感数据,确保数据传输和存储的安全。

《码农修行:编写优雅代码的32条法则》

在这里插入图片描述

编辑推荐

本书针对已经掌握了某种编程语言且从事编程工作1~3 年,并有意愿在此道路上长期发展的程序开发人员,提出了一些改善编程方法的建议,涉及具体编程工作的诸多方面,偏重于实践。书中大部分示例都是作者实际编程工作中碰到过的真实案例,具有较高的参考价值。本书从代码的可读性、可靠性、效率、可维护性、可扩展性5个方面,提出了编写代码的32条法则。这些法则对程序开发人员的实际编程工作有极高的借鉴和指导意义,非常值得这类读者选购。

内容简介

如何打造精品软件一直是软件行业讨论的热点话题。初入职场的软件开发人员,多数都只是在学会了某种编程语言后就直接进行编程工作。但由于他们并未掌握编程中的一些有效方法,导致其开发的软件问题累累且工作效率不高。《码农修行:编写优雅代码的32条法则》针对这类人群提出了一些改善编程方法的建议,涉及具体编程工作的诸多方面,偏重于实践。书中大部分示例都是笔者实际编程工作中碰到过的真实案例,具有较高的参考价值。《码农修行:编写优雅代码的32条法则》从代码的可读性、可靠性、效率、可维护性、可扩展性5个方面,提出了编写代码的32 条法则。此外还公开了笔者自主编写的一款Android 小游戏源代码,希望能对读者有所帮助。

《码农修行:编写优雅代码的32条法则》适用于有一定编程基础、且想进一步提升个人编程能力的读者阅读,也可作为大中专院校计算机专业师生的教学参考用书。

目录

自序前言引子 1



第1 章:可读性 4

法则01:准确命名

法则02:设置缩进 12

法则03:保留个性 16

法则04:语法潜台词 21

法则05:补充注释 26



第2 章:可靠性 37

法则06:增强健壮性 39

法则07:避免过度防御 4

法则08:防止不确定性 48

法则09:善始善终 51

法则10:异常处理 59

法则11:留意编译告警 65

法则12:尽早暴露问题 67

法则13:规避短板 70



第3 章:效率 75

法则14:关注性能热点 77

法则15:留意非热点代码 84

法则16:采用缓存 90

法则17:引入并发 99



第4 章:可维护性 102

法则18:记录日志 104

法则19:明确错误提示 109

法则20:代码看护 112

法则21:消除冗余代码 117

法则22:掌握逻辑运算 123

法则23:控制函数规模 128

法则24:控制文件规模 140



第5 章:可扩展性 143

法则25:正确理解面向对象设计 145

法则26:控制接口规模 155

法则27:写可重用的模块 160

法则28:写可重入的函数 164

法则29:避免循环依赖 169

法则30:保障平稳升级 176

法则31:灵活注入对象 182

法则32:正确运用依赖注入 194



第6 章:代码资源 200日志框架

201进程委托调用框架

208花样泡泡龙

215尾声 267

前言/序言

《码农修行:编写优雅代码的32条法则》所讨论的方法虽不能为你的软件系统创造价值,但能降低成本。任何一项工程都包含价值和成本两方面因素,软件工程也不例外。对客户需求的满足程度就是软件产品价值的体现。客户并不关心你的代码中用了几个设计模式或采用了哪些精妙的结构。如果脱离了客户需求,即使你使用了最优秀的架构、最前沿的技术,产品还是毫无价值。满足软件的价值特性才是写代码的目的,即:满足客户的需求。也许你的代码并不优雅,而且还有瑕疵,但只要功能实现良好且能让客户满意,就能获得市场认可。

既然如此,人们为何还要不断地研究如何创造优雅代码?答案是:为了降低成本,优雅代码具备了降低成本的特性,如开发成本、维护成本、人力成本、时间成本等,这些软件工程的成本因素不容忽视。良好的可读性可以降低开发人员间的沟通成本;高可靠性可以有效避免由于致命问题导致的频繁发布补丁或更新版本;软件的高性能可以降低硬件采购的成本;可维护性与代码和产品的维护成本息息相关;可扩展性强的代码则可以在需求变化时从容应对,减少修改代码的工作量。

《码农修行:编写优雅代码的32条法则》中的例子为C/C++和Java 代码,但这并不是一本讲授某一种编程语言的书。书中所讨论的方法,是我代码工匠生涯中的一些积累和感悟。在归纳整理时,发现它们正好属于软件六大特性中的五个:易用性、可靠性、效率、可维护性、可移植性,这些都决定着软件的成本。书中的这些方法放到任何一个应用系统中都适用。而软件的第一大特性—功能性则决定了软件的价值,它涉及软件系统的方方面面,包括需求价值、业务模型、技术路线等,这已经超出了本书的讨论范围。

本书读者

如果你已经掌握了某种编程语言且从事编程工作1~3 年,并有意愿在此道路上长期发展,但又觉得在编程技艺上碰到了一些困惑同时感觉无法提高,那么你非常适合阅读本书。本书提供的一些思路和方法能给你带来帮助。

如果你从事编程工作3 年以上,已经对写代码有了一定的认识,也希望你能抽空阅读本书,码农修行 编写优雅代码的32条法则的内容可供你参考或对你有所启发,助你在编程的职业通道上更进一步。

此外,推荐高校计算机编程课程教师将其作为参考书使用。

示例代码

本书部分章节涉及的一些示例代码,可访问如下地址下载。

下载地址1:https://github.com/MinyuLi/codewriting。

下载地址2:http://sample.codewriting.cn。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VSCode 报错 之 运行 js 文件报错 ReferenceError: document is not defined

1. 背景 持续学习ing 2. 遇到的问题 在VSCode 右键 code runner js 文件报错 ReferenceError: document is not defined eg: // 为每个按钮添加点击事件监听器 document.querySelectorAll(button).forEach(function (button) {button.addEventListener(click, f…

python基础-数据结构-leetcode刷题必看-heapq --- 堆队列算法

文章目录 堆的定义堆的主要操作堆的构建堆排序heapq模块heapq.heappush(heap, item)heapq.heappop(heap)heapq.heappushpop(heap, item)heapq.heapreplace(heap, item)heapq.merge(*iterables, keyNone, reverseFalse)heapq.nlargest(n, iterable, keyNone)heapq.nsmallest(n, …

赛氪网与武汉外语外事职业学院签署校企合作,共创职业教育新篇章

5月23日下午14:00,武汉外语外事职业学院在藏龙岛校区食堂三楼报告厅隆重举行了2024年职业教育活动周优秀校外实习基地表彰仪式。本次活动旨在表彰在职业教育领域作出突出贡献的校外实习基地,同时加强校企合作,共同推动职业教育的发展。作为重…

gitlab之docker-compose汉化离线安装

目录 概述离线资源docker-compose结束 概述 gitlab可以去 hub 上拉取最新版本,在此我选择汉化 gitlab ,版本 11.x 离线资源 想自制离线安装镜像,请稳步参考 docker镜像的导入导出 ,无兴趣的直接使用在此提供离线资源 百度网盘(链…

经典文献阅读之--RepViT-SAM(利用语义分割提高NDT地图压缩和描述能力的框架)

0. 简介 Segment Anything Model (SAM) 最近在各种计算机视觉任务上展现了令人瞩目的零样本迁移性能 。然而,其高昂的计算成本对于实际应用仍然具有挑战性。MobileSAM 提出通过使用蒸馏替换 SAM 中的重图像编码器,使用 TinyViT,从而显著降低了…

认识K8s集群的声明式资源管理方法

前言 Kubernetes 集群的声明式资源管理方法是当今云原生领域中的核心概念之一,使得容器化应用程序的部署和管理变得更加高效和可靠。本文将认识了解 Kubernetes 中声明式管理的相关理念、实际应用以及优势。 目录 一、管理方法介绍 1. 概述 2. 语法格式 2.1 管…

AI图书推荐:用ChatGPT和Python搭建AI应用来变现

《用ChatGPT和Python搭建AI应用来变现》(Building AI Applications with ChatGPT API)将ChatGPT API与Python结合使用,可以开启构建非凡AI应用的大门。通过利用这些API,你可以专注于应用逻辑和用户体验,而ChatGPT强大的…

适合学生党的蓝牙耳机有哪些?盘点四大性价比蓝牙耳机品牌

对于追求高品质音乐体验而又预算有限的学生党来说,一款性价比高的蓝牙耳机无疑是最佳选择,在众多品牌和型号中,如何挑选到既适合自己需求又价格亲民的蓝牙耳机,确实是一个值得思考的问题,作为一个蓝牙耳机大户&#xf…

台灯护眼是真的吗?警惕这六大问题!

在当今社会,随着电子设备的普及和长时间的用眼,大多数人面临着严重的视觉疲劳问题。长时间盯着屏幕或学习,眼睛需要不断调节焦距,导致眼睛肌肉疲劳,进而引发视力下降。这种现象在年轻一代甚至青少年中尤为普遍&#xf…

半导体测试基础 - 功能测试

功能测试(Functional Test)主要是验证逻辑功能,是运用测试矢量和测试命令来进行的一种测试,相比于纯 DC 测试而言,组合步骤相对复杂且耦合度高。 在功能测试阶段时,测试系统会以周期为单位,将测试矢量输入 DUT,提供预测的结果并与输出的数据相比较,如果实际的结果与测…

图论(五)-最短路

一、Bellman-Ford算法 算法思想:通过 n 次循环,每次循环都遍历每条边(共 m 条边),进而更新节点的距离,每次循环至少可以确定一个点的最短路,循环 n 次,求出 n 个点的最短路 时间复杂…

opencascade V3d_RectangularGrid 源码学习

类V3d_RectangularGrid V3d_RectangularGrid() V3d_RectangularGrid::V3d_RectangularGrid(const V3d_ViewerPointer &aViewer, const Quantity_Color &aColor, const Quantity_Color &aTenthColor) // 构造函数 ◆ ~V3d_RectangularGrid() virtual V3d_Rectang…

YOLOv10最详细全面讲解1- 目标检测-准备自己的数据集(YOLOv5,YOLOv8均适用)

YOLOv10没想到出来的如此之快,作为一名YOLO的爱好者,以YOLOv5和YOLOv8的经验,打算出一套从数据集装备->环境配置->训练->验证->目标追踪全系列教程。请大家多多点赞和收藏!!!YOLOv5和YOLOv8亲测…

Simulink从0搭建模型06-P7模型中结构体的使用

Simulink从0搭建模型06-P7模型中结构体的使用 本节课学习内容1. 结构体的创建 Bus Creator(多输入单输出)2. 结构体的引用 Bus Selector(单输入多输出)3. 结构体的赋值 Bus Assignment4. 结构体对象的创建 Bus object5. 结构体数组…

10分钟掌握FL Studio21中文版,音乐制作更高效!

FL Studio 21中文版是Image Line公司推出的一款深受欢迎的数字音频工作站软件,在音乐制作领域享有盛誉。这个版本特别针对中文用户进行了本地化处理,旨在提供更加便捷的用户体验和操作界面。本次评测将深入探讨FL Studio 21中文版的功能特点、使用体验及…

Java RMI

RMI - 安全篇 RMI分为三个主体部分: *Client-客户端*:客户端调用服务端的方法 *Server-服务端*:远程调用方法对象的提供者,也是代码真正执行的地方,执行结束会返回给客户端一个方法执行的结果。 *Registry-注册中心…

防火墙技术基础篇:配置主备备份的双机热备

防火墙技术基础篇:配置主备备份的双机热备 防火墙双机热备(High Availability, HA)技术是网络安全中的一个关键组成部分,通过它,我们可以确保网络环境的高可靠性和高可用性。下面我们一起来了解防火墙双机热备的基本原…

第二十三届中国科学家论坛盛大开幕,星医联董事长杨星荣获“十四五”科技创新先锋人物

2024年5月25-26日,第二十三届中国科学家论坛在北京召开,北京星医联科技有限公司(以下简称“星医联”)董事长杨星女士受邀出席并荣获“十四五科技创新先锋人物”称号。同时星医联专利“一种靶向协同降脂的纳米双药制备及应用”荣获…

[CVPR-24] HUGS: Human Gaussian Splats

本文提出一种新的数字人表征Human Gaussian Splats (HUGS),可以实现新姿态和新视角生成;本文提出一种新的前向形变模块(forward deformation module),在标定空间基于Gaussians表征数字人,并基于LBS学习如何…

从 ASCII 到 UTF-8 - Unicode 码的诞生与实现

前言:最近我在整理过往笔记时,发现涉及到了 UTF-8、Unicode 的相关内容,相信大家中的很多人和之前的我一样,在过去的很长一段时间里,并没有搞清楚什么是 Unicode、什么是 UTF-8,于是就有了这篇文章&#xf…