编写干净代码的 9 条必须知道的规则

编写URL规则 编写URL规则 在每个App中设置独立的静态资源和模板文件,并添加一个空白的 urls.py,将属于App的URL都写入该文件夹,而项目根目录的urls.py是将每个App的urls.py统一管理。根目录的uels.py编写如下: from django.contrib import admin # 导入Admin功能模块 from django.urls import path, incl... 阅读详情

您是否厌倦了盯着一堆连您的猫都不会碰的代码?别再看了。在这篇文章中,我将告诉您 9 条规则,将您的烂尾代码变成艺术品。

 

所以喝杯咖啡,坐下来负责你的代码!

规则#1 - 让你的代码井井有条且易于阅读

你可以不整理你的衣橱,但一定要整理你的代码。通过使代码井井有条且易于阅读,您可以快速找到所需内容。

检查以下示例:

// Group related functions together
function calculateTotal() {
 // code
}

function calculateTax() {
 // code
}

function calculateDiscount() {
 // code
}

// Use comments to explain the purpose of the code
function calculateTotal() {
 // calculate subtotal
 let subtotal = 0;
 // add items
 subtotal += item1.price;
 subtotal += item2.price;
 // return total
 return subtotal;
}

如您所见,稍加计划和适量的注释可以让浏览代码变得轻而易举。

乍一看,即使在编写代码已有一段时间后,您也能很好地了解整体功能。

并不是每一天你都会感谢过去的自己做了一些好事!

规则#2 - 遵循既定的编码约定和标准

我知道成为叛逆者并规划自己的路线很诱人。

但有时,遵循既定的编码惯例和标准是值得的。这包括命名约定、评论指南等内容。

请参阅下面的片段,了解我要说的内容。

// Naming conventions
let userName; // camelCase for variables and properties
const MAX_USERS; // UpperCamelCase for constants

// Commenting guidelines
// This function takes in a number and returns its square
function square(num) {
 return num * num;
}

我们的想法是要始终如一地玩游戏。通过遵循您团队的代码约定,您的代码不会像拇指一样突出,您的开发人员也会欣赏您。

规则#3 - 使用描述性变量和函数名称

我知道将变量命名为 X 和 Y 很时髦。

但是请相信我,几个月后,即使是你也无法理解它们的真正含义。

为变量赋予描述性名称总是安全的。从长远来看,它甚至可能对您更好。

// Descriptive function name
function calculateSum(numbers) {
 // Descriptive variable name
 let sum = 0;
 // Iterate through the array of numbers
 for (let i = 0; i < numbers.length; i++) {
   // Add each number to the sum
   sum += numbers[i];
}
 // Return the sum
 return sum;
}

如您所见,即使函数的代码有一个循环,函数和变量名也使程序的目标一目了然。

规则#4 - 避免硬编码值并使用常量

向硬编码说再见,向常量问好!

通过使用常量,您将能够存储您知道在整个程序中不会改变的值。这将帮助您避免在整个代码中搜索和替换值的麻烦。

查看下面的代码。

const TAX_RATE = 0.07;

function calculateTotal(subtotal) {
 return subtotal + (subtotal * TAX_RATE);
}

如果未来税率发生变化,您可以轻松地在一个地方更新该值,并将其反映在整个代码中。

规则#5 - 保持函数小而集中

当您开始作为一名开发人员时,总是很想将您的功能变成瑞士刀。解释您的代码可以做这么多事情的感觉是如此诱人。

当您成为经验丰富的开发人员时,这种习惯就会消失。但有时它不会。

相信我。保持你的功能小,你的生活就会快乐。

如果您编写易于理解的小而集中的函数,那么如果出现问题,您很可能不会在海滩度假时受到打扰。

请参阅此示例。

function calculateTotal(subtotal, tax, discount) {
 const total = subtotal + tax - discount;
 return total;
}

上面的函数简短而切题。这使得它易于理解和维护。

规则#6 - 使用合适的数据结构

您是否总是试图在圆孔中安装方钉?如果是,是时候使用适当的数据结构了。

就像木匠针对不同的任务拥有多种工具一样,开发人员应该针对不同类型的功能拥有多种数据结构。

这是一个备忘单:

  • 当您需要存储具有特定顺序的项目集合时,请使用数组。
  • 当您需要存储可以动态更改的项目集合时,请使用列表。
  • 最后,如果您需要存储可以通过键访问的项目集合,请使用映射。

查看下面的代码,演示了不同数据结构的使用。

// Using an array to store a collection of items that have a specific order
const shoppingList = ["milk", "bread", "eggs"];
console.log(shoppingList[1]); // Output: "bread"

// Using a list to store a collection of items that can change dynamically
const todoList = ["write code", "debug", "test"];
todoList.push("deploy");
console.log(todoList); // Output: ["write code", "debug", "test", "deploy"]

// Using a dictionary to store a collection of items that can be accessed by a key
const phonebook = {
 "John": "555-555-5555",
 "Mary": "555-555-5556",
 "Bob": "555-555-5557"
};
console.log(phonebook["Mary"]); // Output: "555-555-5556"

通过根据需求使用合适的数据结构,您会发现您的代码不仅高效而且易于理解。

规则#7 - 使用版本控制

就像你的应用程序如果只在你的机器上运行就没有用一样,如果你的代码没有提交到中央存储库,它也没有用。

每个开发人员都应该习惯版本控制。不要忘记定期提交代码。如果您正在这样做,请确保您团队中的其他人也这样做。

只需要几个命令:

// Initialize a new Git repository
$ git init

// Add all files to the repository
$ git add .

// Commit the changes with a message
$ git commit -m "Initial commit"

一个好的版本控制工具允许开发人员跟踪更改、与他人协作并在出现任何问题时轻松恢复到以前的版本。

规则# 8 - 自动化重复性任务

不要像轮子上的仓鼠一样,不停地原地打转,一遍又一遍地做着同样无聊的工作。

您应该使用工具和脚本来自动执行代码中的重复性任务。这不仅可以节省时间,还可以使您的代码更加可靠和高效。

查看此简单测试自动化脚本的代码示例。

const testCases = [
  { input: [1, 2], expectedOutput: 3 },
  { input: [2, 3], expectedOutput: 5 },
  { input: [3, 4], expectedOutput: 7 },
];

testCases.forEach(testCase => {
   const output = addNumbers(testCase.input[0], testCase.input[1]);
   if (output !== testCase.expectedOutput) {
       console.error(`Test failed: expected ${testCase.expectedOutput} but got ${output}`);
  } else {
       console.log("Test passed");
  }
});

您还可以自动化编译代码和创建最终包的构建过程。

请参阅下面的示例,其中我们使用 Gulp 等工具自动化构建过程。

// Automating a build process using a tool like Grunt or Gulp
const gulp = require('gulp');

gulp.task('build', function() {
// Build process logic
});

gulp.task('default', ['build']);

规则#9 - 保持你的代码是最新的

不要成为恐龙。你只会灭绝。

让您的代码保持最新。尽可能更新您的应用程序依赖项。

例如,如果您在 Node 生态系统中工作,请使 NPM 保持最新并升级您的开发环境。

// Keep dependencies up-to-date using package manager
$ npm update

// Keep the development environment up-to-date
$ nvm install 12.16.3

就是这样!

那么,你有它。9 条规则可帮助您编写干净高效的代码。

当然,这些并不是唯一重要的事情。但是通过遵循它们,您将能够开始编写不仅运行良好而且看起来令人愉悦的代码,让其他人阅读、理解和维护。

为帮助到一部分同学不走弯路,真正达到一线互联网大厂前端项目研发要求,首次实力宠粉,打造了《30天挑战学习计划》,内容如下:

HTML/HTML5,CSS/CSS3,JavaScript,真实企业项目开发,云服务器部署上线,从入门到精通

  • PC端项目开发(1个)
  • 移动WebApp开发(2个)
  • 多端响应式开发(1个)

共4大完整的项目开发 !一行一行代码带领实践开发,实际企业开发怎么做我们就是怎么做。从学习一开始就进入工作状态,省得浪费时间。

从学习一开始就同步使用 Git 进行项目代码的版本的管理,Markdown 记录学习笔记,包括真实大厂项目的开发标准和设计规范,命名规范,项目代码规范,SEO优化规范

从蓝湖UI设计稿 到 PC端,移动端,多端响应式开发项目开发

  • 真机调试,云服务部署上线;
  • Linux环境下 的 Nginx 部署,Nginx 性能优化;
  • Gzip 压缩,HTTPS 加密协议,域名服务器备案,解析;
  • 企业项目域名跳转的终极解决方案,多网站、多系统部署;
  • 使用 使用 Git 在线项目部署;

这些内容在《30天挑战学习计划》中每一个细节都有讲到,包含视频+图文教程+项目资料素材等。只为实力宠粉,真正一次掌握企业项目开发必备技能,不走弯路 !

过程中【不涉及】任何费用和利益,非诚勿扰 。

如果你没有添加助理老师微信,可以添加下方微信,说明要参加30天挑战学习计划,来自今日头条!老师会邀请你进入学习,并给你发放相关资料。

30 天挑战学习计划 Web 前端从入门到实战 | arry老师的博客-艾编程

Suricata规则编写——常用关键字 1.简介现在的NIDS领域snort一枝独秀,而suricata是完全兼容snort规则的多线程IDS,无论在效率还是性能上都超过原有的snort,这个系列主要针对suricata的规则中的一些关键字进行了解和学习,参考链接为:https://redmine.openinfosecfoundation.org/projects/suricata/wiki/Suricata_Rules2.基本关键字所 阅读详情

相关推荐

9、ModSecurity规则编写全解析

本文全面解析了ModSecurity规则编写的各个方面,涵盖规则链与运算符否定、变量计数、动作使用与默认值、链式规则结构、无条件规则SecAction、数据转换函数、阻止动作选择以及规则流程控制等内容。通过示例分析、流程图展示和优化建议,帮助读者深入理解如何编写高效、安全且易于维护的ModSecurity规则,并提供了规则维护与调试的最佳实践,助力提升Web应用的安全防护能力。

ujm5678901的博客 62

写出漂亮代码的45个小技巧

比如在项目中不同的类型的业务可能需要上传各种各样的附件,此时就可以定义好不同的一个附件的枚举,来区分不同业务的附件。不要在代码中直接写死,不定义枚举,代码阅读起来非常困难,直接看到数字都是懵逼的。。

D1156298932的博客 475

忍者安全渗透系统(NINJITSU OS V3)的安装详细过程,亲测新旧vm版本都可安装,附带下载来源

忍者安全渗透系统(NINJITSU)的安装详细过程,亲测新旧vm版本都可安装,附带下载来源

1万+

代码书写规则及命名规范

代码书写规则 (1)尽量使用接口,然后使用类实现接口,以提高程序的灵活性。 (2)一行不要超过80个字符。 (3)尽量不要手工更改计算机生成的代码,若必须更改,一定要改成和计算机生成的代码风格 一样。 (4)关键的语句(包括声明关键的变量)必须要写注释。 (5)建议局部变量在最接近使用它的地方声明。 (6)不要使用goto系列语句,除非是用在跳出深层循环时。 (7)避免写超过5个...

qq_30278319的博客 5310

【数学基础】基于欧拉角表达的旋转顺序

欧拉角旋转顺序

FalschxMico 1385

泛微E9集成登录实战:5分钟搞定第三方系统单点登录配置(附避坑指南)

本文详细解析了泛微E9集成登录的实战配置流程与核心原理。通过理解其基于信任代理的身份传递机制,文章指导用户如何在5-10分钟内完成第三方系统的单点登录对接,涵盖基础配置、核心参数设置、高级表达式应用,并提供了编码问题、账号不一致等常见避坑指南,助力企业快速构建统一身份认证门户。

weixin_29185493的博客 297

代码编写规范

概述 规范的代码,是项目质量的保障。本代码规范从typescript、 javascript、css、vue 等几个方面,对日常开发中的代码编写,给出了规范性的指导与建议,能有效避免代码级别的缺陷与错误;也可依据本规范,在代码审查中,对不符合规范的代码提出问题;是 Segma 前端团队的重要规范之一。 优先级说明 A:必要的 非特殊情况下,必须遵守的规范,通常这些规范会帮你避免错误。 B:强烈推荐的 被大量使用的规则,大多数都能改善代码可读性与开发体验,但即使违反,也不会导致错误。 C:谨慎使用的 使用起来

liusixsixsix的博客 4372

Windows 10下Carla 0.9.15安装避坑指南:从下载到运行的全流程解析

本文详细解析了在Windows 10系统上安装和运行Carla 0.9.15自动驾驶仿真平台的全流程。内容涵盖从系统环境准备、资源下载、Python依赖安装,到首次启动验证及常见错误(如DLL缺失、显卡驱动问题)的深度解决方案,旨在帮助用户快速搭建稳定的开发环境,并运行第一个自动驾驶Python脚本。

alice7model的博客 547

代码书写规范

1、代码缩进 在书写代码的时候,必须注意代码的缩进规则,我们规定代码缩进规则如下: 在缩进中使用tab缩进,不要是空格缩进 例子: for ( $i=0;$i<$count;$i++ ) { echo 'test'; } 2、括号的使用 在程序中进行结构控制代码编写,如if、for、while、switch等结构,大括号传统的有两种书写习惯,分别如下: a.{ 直接跟在控制语句之后,不换行,如: for ( $i=0;$i<$count;$

winkexin的博客 4702

PT32F030与MT6826S SPI通讯实战:从硬件连接到数据交互全流程解析

本文详细解析了PT32F030与MT6826S通过SPI通讯的全流程,包括硬件连接、电路设计、SPI外设初始化配置以及数据交互协议实现。通过实战案例和代码示例,帮助开发者快速掌握PT32F030与MT6826S的SPI通讯技术,实现精准的角度和速度数据采集。

weixin_29189373的博客 420

Landsat9 地表温度反演方法

landsat9地表温度反演及缺失值处理方法

xiangliu12345的博客 3919

代码编写规则

1.代码以英文全拼单词首字母为间隔定义对象和变量 2.仓库区域设备等基础信息还是用P_Id关联 3.单据信息以Code关联,因为需要单据导入导出后期维护等动作 4.后台驱动封装尽量分开写,注意概念区分,不同概念分开写不同方法 5.代码避免同层方法调用 ...

zhangshaofengasd的博客 800

11.8 LangGraph生产级AI Agent开发:从节点定义到高并发架构的终极指南

本文介绍了如何使用 LangGraph 构建生产级 AI Agent,重点解析了 LangGraph 的核心设计、节点与边的实现方法论、生产级实现技巧以及性能优化策略。LangGraph 通过图结构抽象复杂 AI 工作流,核心组件包括节点、边、状态和检查点。节点通过 Python 函数封装原子业务逻辑,边通过条件分支实现动态工作流。生产级实现技巧包括状态管理、多会话控制和错误处理机制。性能优化策略涉及并行执行和缓存机制设计。文章还提供了旅行规划 Agent 的实战案例和常见问题解决方案,帮助开发者构建高效、

yonggeit的博客 3272

如何在 Python 中编写干净的代码

在上的照片编写干净的代码不仅仅是件好事。当你运行生产就绪的代码时,编写干净的代码是必需的。作为一名数据科学家,我主要使用 Jupyter 笔记本,目标是开发一个与可用数据一起工作的模型。一开始,一切都是关于展示,总的来说,AI 可以在给定数据的情况下提供价值。但一旦这被证明,模型就需要投入生产。这就是痛苦开始的地方。大部分代码都很丑陋,难以阅读和维护。作为一名数据科学家,我坦白地说,我并不真的在乎。

龙哥盟 435

Python爬虫实战:模拟登录B站 – 处理Cookie和加密参数

由于B站在登录过程中采用了多种安全措施,包括加密的请求参数和cookie验证,模拟登录成为一项具有挑战性的任务。首先,我们需要获取B站的登录页面,并解析出其中的CSRF令牌和其他隐藏的字段。B站的登录接口通常会包含一些动态的加密参数,我们需要在登录前通过GET请求获取这些信息。本文详细介绍了如何使用Python模拟登录B站,解决加密参数的处理、图形验证码的识别以及登录后的数据抓取。库中的加密方法加密登录请求中的密码。一旦登录成功,我们可以通过维护会话状态,抓取登录后的数据,如个人主页、评论、观看记录等。

2201_76125261的博客 1310

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Snort搭建以及规则编写

它具有实时数据流量分析和记录IP网络数据包的能力,能够进行协议分析,对网络数据包内容进行搜索/匹配。此外,Snort是开源的入侵检测系统,并具有很好的扩展性和可移植性。中,规则储存在 /etc/snort/rules中,编译规则储存在 /usr/local/lib/snort_dynamicrules 中,日志粗存在 /var/log/snort 中。我们使用官方给的免费的社区规则,如果有需要的话可以选择官方的其他套餐。

xhscxj的博客 5068

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

snort学习以及规则编写

一、结构 CIDF模型(Common Intrusion Detection Framework): 包含事 件生成器(event generator:E-boxes),分析引擎(analysis engines:A-boxes),存储机制(storage mechanisms:D-boxes),以及响应模块(countermeasures:C-boxes) SNORT数据流 snort ...

fa1lr4in的小博客 3136

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

NASA的10条编码规则

关于NASA的10条编程规则,他们曾表示:这些规则的作用就像汽车上的安全带:最初,它们可能有点不舒服,但过了一会儿,它们的使用就变成了第二天性,而没有使用它们就变得不可想象。 Gerard J. Holzmann 10条规则的力量是由NASA / JPL可靠软件实验室的Gerard J. Holzmann于2006年创建的。这些规则旨在消除某些使代码难以查看或静态分析的C语言编程实践。 ...

京东科技开发者 1718

实现高效Java编程的9条基础规则

最近摘录有

Joker_Ya的专栏 832

代码编写的参考规则-方法篇

我的代码可读性比较低,遵循这些规范,我的代码可读性大大提高了。所以我想分享给更多有这个疑惑的人,如果有什么更好的规则方法,欢迎随时讨论。

喵煞的博客 994

Web设计技巧:实现干净代码的12条定律

2009-04-23 08:18作者:COMSHARP CMS出处:天极网责任编辑:盛晓莹 漂亮的代码是漂亮网站的基础,优秀的 CSS 只存在与同样优秀的 HTML 之上,干净的,语义的 HTML 代码让一个网站更健壮。本文讲述了12个实现干净 Web ...

chenqunan3231的博客 55

HTML编写规则到底是什么意思?

问题:我们想要在电脑上做出好看的网页,该怎么开始动手做呢?答案:HTML 编写规则就像是盖房子的图纸,它告诉我们怎么用 HTML 代码把网页搭建起来。按照这些规则写代码,电脑才能正确地显示出我们想要的网页样子。比喻:就像搭积木一样,有了规则我们才知道怎么把不同形状的积木拼在一起,搭出漂亮的城堡。标签是 HTML 里最基本的组成部分,它用来告诉浏览器这是什么类型的内容。不同的标签有不同的作用,比如<h1>到<h6>标签用来表示不同级别的标题,<a>标签用来创建链接。<h1>这是大标题</h1>

长风破浪会有时的博客 800

编写Java程序的三十个基本规则

编写Java程序的三十个基本规则  (1) 类名首字母应该大写。字段、方法以及对象(句柄)的首字母应小写。对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母。例如:   ThisIsAClassName   thisIsMethodOrFieldName   若在定义中出现了常数初始化字符,则大写static final基本类型标识符中的所有字母。这样便可标志出它们属于编译

An缘 530

团队AI代码审查规则库落地:3条真规则好过41条抄来的(附团队规范模板与维护机制)

《代码审查规则的进化:从文档到AI驱动的活规范》 文章分享了团队通过AI实现代码审查规则自动化的实践经验。核心观点是:传统文档型规范易失效,而将规则嵌入AI审查流程可使其持续生效。关键做法包括: 双层规则库:个人通用规则与团队专属规则分离,前者随开发者迁移,后者绑定代码仓库,新人克隆即继承历史经验。 结构化规则格式:每条规则需包含具体条款、来源、事故背景及豁免条件,确保可追溯性和场景适配性。 动态维护机制:规则随线上事故即时更新,AI自动同步生效,并通过定期"称重"淘汰无效规则。

u010567709的博客 174

如何编出健壮的代码 java编程30条规则

这是一些相当不错的忠告!每个规则都很有分量!都是长期经验积累的总结,希望能对您有所帮助,使您编出高质量的JAVA代码。 (1)类名首字母应该大写。字段、方法以及对象(句柄)的首字母应小写。对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母。 例如: ThisIsAClassName thisIsMethodOrFieldName 若在定义中出现了常数初始化字符,

u013890660的专栏 522

厌倦了C++,CS&ML博士用Rust重写Python扩展,还总结了9条规则

选自medium.com 作者:Carl M. Kadie 机器之心编译 编辑:杜伟、陈萍 效果好不好,试一试就知道了。 Python 是数据科学家最流行的编程语言之一,其内部集成了高质量分析库,包括 NumPy、SciPy、自然语言工具包等,这些库中的许多都是用 C 和 C++ 实现的。 然而,C 和 C++ 兼容性差,且本身不提供线程安全。有研究者开始转向 Rust,重写 C++ 扩展。 拥有 CS 与机器学习博士学位的 Carl M. Kadie,通过更新 Python 中生物信息学..

pythondby的博客 4651
上一篇: 前端CSS网页布局新技术(双屏和折叠屏手机)解决方案
下一篇: 8个你可能不知道答案的常见JavaScript面试问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾编程前端技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值