【编程向导】程序员如何编写干净,清爽的代码

简介: 老实说,每个开发人员(是的,即使是那些有多年经验的开发人员)都曾在某个时候发布过凌乱的代码。编写干净的代码并不是什么精英技能。这是你可以养成的习惯。那么重构呢?这只是您使代码真正有意义的机会 - 对您和以后维护它的人来说都是有 `意义 `的。让我们来分析一下。没有绒毛。没有抽象的理论。只是 `实用 `的、真实的提示,可帮助你编写干净、可维护的代码。

老实说,每个开发人员(是的,即使是那些有多年经验的开发人员)都曾在某个时候发布过凌乱的代码。
编写干净的代码并不是什么精英技能。这是你可以养成的习惯。那么重构呢?这只是您使代码真正有意义的机会 - 对您和以后维护它的人来说都是有 意义的。
让我们来分析一下。没有绒毛。没有抽象的理论。只是 实用的、真实的提示,可帮助你编写干净、可维护的代码。

1. 按照你的意思命名

你的变量和函数需要讲述一个故事。
不是 、 不是 、 不是 。这些只是混淆的占位符。

差:getUserProfile() getData()
❌ 差:maxLoginAttempts m

当您正确命名时,您的代码会自行解释 — 不需要侦探工作。

2. 少即是多:函数大小的力量

如果你像一篇文章一样滚动浏览一个函数,那就有问题了。
长函数难以阅读、难以调试且难以维护。相反,将它们分解为更小的单一用途函数。
可以这样想:每个函数都应该回答一个问题。如果它回答了 5 个,就把它分开。

例:
// Instead of this
function processUserData(user) {
   
  validateUser(user);
  saveToDatabase(user);
  sendEmail(user.email);
}

// Do this
function validateAndSaveUser(user) {
   
  validateUser(user);
  saveToDatabase(user);
}

function notifyUser(email) {
   
  sendEmail(email);
}

这使您的代码更易于阅读和重用。未来 - 你会感谢你。

3. 一致性是关键

你有没有参与过一个项目,在一个地方又在另一个地方被调用?混沌。 userListusersactiveUsersArray
保持命名约定、缩进和格式一致。当您的代码遵循可预测的模式时,它更易于阅读,也更易于调试。

❌ 差:userList, orderList, productList users, ordersList, listOfProducts

选择一个约定并坚持下去。没有惊喜。

4. 有目的地发表评论,而不是出于习惯

评论应该解释原因,而不是解释什么。如果您的代码需要注释来说明它的作用,请改为重写代码。
例:

// ❌  坏习惯
// Increase count by 1
count = count + 1;

// ✅ 好习惯
// Edge case: Prevents counter from going negative
if (count > 0) {
   
  count--;
}

写增加价值的评论,而不是陈述显而易见的评论。

5. 魔术数字和硬编码值 – 摆脱它们

见过包含随机数的函数吗?是的,这是一场维护噩梦。

相反,请使用使这些值有意义的常量。

例:

// ❌ 
if (user.loginAttempts > 3) {
   
  lockAccount(user);
}

// ✅ 
const MAX_LOGIN_ATTEMPTS = 3;
if (user.loginAttempts > MAX_LOGIN_ATTEMPTS) {
   
  lockAccount(user);

}
好多了。

6. DRY:不要重复自己

重复的代码只是等待中断。如果您发现自己在复制粘贴,请停止。请改为创建可重用的函数或模块。

例:

// ❌ 
sendEmail(user.email, "Welcome!");
sendEmail(admin.email, "New user registered!");

// ✅ 
function sendNotification(email, message) {
   
  sendEmail(email, message);
}
sendNotification(user.email, "Welcome!");
sendNotification(admin.email, "New user registered!");

这样,当需要更改时,您只有一个更新位置。

7. 保持你的代码可靠

如果您还没有听说过 SOLID 原则,现在是开始的好时机。以下是 5 条简单的规则,可使您的代码更简洁、更易于维护。
如果不出意外,请从以下位置开始:单一责任原则。
➡ 每个函数 / 类都应该做一件事并把它做好。
如果您的类同时处理用户身份验证和数据库存储,那么是时候进行重构了。

8. 无情地重构 编写干净的代码不是一劳永逸的事情。这是一种习惯。

每次审查代码时,请寻找改进代码的方法:
你能重命名变量为清楚起见吗?
您能分解一个巨大的 函数吗?
你能删除不必要的评论吗?
不要等待重大重写 - 随时 重构

例:

// ❌ First draft
function fetchUserData(userId) {
   
  return fetch(`https://api.example.com/user/${
     userId}`)
    .then(response => response.json())
    .catch(error => console.error(error));
}

// ✅ Refactored
async function fetchUserData(userId) {
   
  try {
   
    const response = await fetch(`https://api.example.com/user/${
     userId}`);
    return await response.json();
  } catch (error) {
   
    console.error(error);
  }
}

重构并不意味着您的第一次尝试很糟糕,而是意味着您正在改进它。
如果可以:
✅ 清楚地
✅命名内容 保持函数小
✅ 保持一致
✅ 避免硬编码值
✅ 经常重构
…您已经遥遥领先了。

目录
相关文章
|
5月前
|
存储 弹性计算 人工智能
2026年最新阿里云无影云电脑收费价格:企业版、个人版及免费版配置收费清单
阿里云无影云电脑2026年升级配置与计费体系,覆盖企业版、个人版及免费试用。企业版分四类,支持灵活时长包与高性能图形工作站;个人版推五档核时套餐,适配办公与游戏;新用户可享免费试用。按需选择,降本增效。
|
4月前
|
安全 虚拟化 iOS开发
|
C语言 C++ 容器
【数据结构】二叉搜索树(二叉排序树)
本文介绍了二叉搜索树(Binary Search Tree, BST)的定义、实现及其性能分析。二叉搜索树是一种特殊的二叉树,其特点是左子树所有节点值小于根节点值,右子树所有节点值大于根节点值,且每个子树也满足此特性。文中详细讲解了BST的节点结构、插入、查找、删除等操作的实现,并通过C++代码展示了这些功能。此外,还讨论了BST的性能:在理想情况下,时间复杂度接近O(logN),但在最坏情况下可能退化为O(N)。为了提高效率,后续将学习自平衡二叉搜索树如AVL树和红黑树。掌握BST有助于理解STL中的set和map容器。感谢阅读,欢迎点赞支持。
1556 9
|
机器学习/深度学习 人工智能 自然语言处理
《DeepSeek-R1 “人性化”交互:情感计算是幕后真英雄》
在人工智能快速发展的今天,DeepSeek-R1以其卓越的“人性化”交互设计备受关注。这种设计使机器能像人类一样理解并回应情感需求,提供自然、舒适的交流体验。其背后是否依赖情感计算技术成为热议话题。情感计算通过分析语言、表情等信息,使AI感知并回应用户情绪,这与DeepSeek-R1的表现高度契合。尽管它还依赖其他技术如深度学习和多轮对话管理,但情感计算无疑为其提供了重要支持,使其在众多AI产品中脱颖而出。未来,情感计算将在AI人性化交互中发挥更大作用。
759 14
|
SQL JSON 数据处理
5% 消耗,6 倍性能:揭秘新一代 iLogtail SPL 日志处理引擎与 Logstash 的 PK
在本文中,我们将深入探讨为何选择 iLogtail,以及它在 SPL 数据处理方面相较于 Logstash 有何独特优势。通过对比这两款工具的架构、性能以及功能,我们希望能够揭示 iLogtail 如何在日益复杂的日志处理需求中脱颖而出,帮助您做出明智的技术选择。
40916 113
|
数据采集 SQL 数据管理
读数据质量管理:数据可靠性与数据质量问题解决之道05数据标准化
【11月更文挑战第9天】《数据质量管理:数据可靠性与数据质量问题解决之道 - 05 数据标准化》介绍了数据标准化在数据质量管理中的重要性。文章从提高数据一致性、提升数据整合效率、增强数据分析准确性三个方面阐述了数据标准化的关键作用,并详细说明了格式、编码、度量单位的标准化内容及实施方法。此外,还介绍了常用的数据清洗工具和编程语言,以及数据标准化的实施流程,包括现状评估、标准制定、数据转换和验证监控。
539 8
|
人工智能 vr&ar
GeneMAN:上海AI Lab联合北大等高校推出的3D人体模型创建框架
GeneMAN是由上海AI实验室、北京大学、南洋理工大学和上海交通大学联合推出的3D人体模型创建框架。该框架能够从单张图片中生成高保真度的3D人体模型,适用于多种应用场景,如虚拟试衣、游戏和娱乐、增强现实和虚拟现实等。
874 7
GeneMAN:上海AI Lab联合北大等高校推出的3D人体模型创建框架
|
Linux Go API
MemoryModule内存反射DLL加载探索
MemoryModule内存反射DLL加载探索
|
存储 运维 监控
阿里云斩获中国电子学会科技进步一等奖
中国电子学会正式公布“2023中国电子学会科学技术奖”名单,清华大学、阿里云、南开大学、北京必示科技完成的“大规模在线服务智能运维核心技术及产业化”获得科技进步一等奖。
1251 1

热门文章

最新文章