首页 > 编程语言 >编程命名规范(网文)

编程命名规范(网文)

时间:2024-11-19 18:19:33浏览次数:1  
标签:Good const 编程 filter Bad 网文 命名 上下文

一个好的变量或函数命名,应该能起到自解释的作用,甚至能减少我们代码的注释。

naming-cheatsheet是一个命名备忘录,记录一些常见的规范约定,并提供简单的例子说明。如果能够严格遵守这些规范,相信我们的代码可读性会大大提升,下面就来介绍 naming-cheatsheet 提供的一些建议。

项目地址:

https://github.com/kettanaito/naming-cheatsheet

使用英语

这是最基本的一条规则了,英语是编程中的主要语言,所有编程语言的语法都是用英语编写的,通过英语编写代码,可以大大提高其通用性。对于我们国内开发者来说,一定要避免拼音甚至是直接的中文命名。

/* Bad */
const primerNombre = 'Gustavo'
const amigos = ['Kate', 'John']

/* Good */
const firstName = 'Gustavo'
const friends = ['Kate', 'John']

命名风格

选择一种命名的风格,并且严格遵守,可以是camelCase,或者snake_case,或者是其他任何的风格,最重要的是要保持一致,不管是个人开发者还是团队,保持一致的命名风格很重要,不要混合使用。

/* Bad */
const page_count = 5
const shouldUpdate = true

/* Good */
const pageCount = 5
const shouldUpdate = true

/* Good as well */
const page_count = 5
const should_update = true

遵守SID原则

命名应该简短、直观并且具有描述性,遵循SID原则。

  • Short。简短,避免输入太长,但是也应该注意不能简写到失去其原本的意义。
  • Intuitive。直观,并且尽可能接近自然语言。
  • Descriptive。以最有效的方式反映其作用或目的。
/* Bad */
const a = 5 // "a" could mean anything
const isPaginatable = a > 10 // "Paginatable" sounds extremely unnatural
const shouldPaginatize = a > 10 // Made up verbs are so much fun!

/* Good */
const postCount = 5
const hasPagination = postCount > 10
const shouldPaginate = postCount > 10 // alternatively

避免过度的简写

命名要简短,但是要避免钻牛角尖,命名最重要的是要让人能看懂,过度的缩写如果失去了其原本的意义,降低了代码的可读性,那就不应该这么做,宁愿多写几个字母。

/* Bad */
const onItmClk = () => {}

/* Good */
const onItemClick = () => {}

避免上下文重复

有时候在一段代码中可能会出现类似意义的变量定义,这个时候要避免命名的重复。

class MenuItem {
  /* Method name duplicates the context (which is "MenuItem") */
  handleMenuItemClick = (event) => { ... }

  /* Reads nicely as `MenuItem.handleClick()` */
  handleClick = (event) => { ... }
}

反映预期结果

变量或函数的命名应该能反映预期的结果。

/* Bad */
const isEnabled = itemCount > 3
return <Button disabled={!isEnabled} />

/* Good */
const isDisabled = itemCount <= 3
return <Button disabled={isDisabled} />

命名的模式

可以参考以下类似的模式来做命名。

A/HC/LC模式

可以遵循A/HC/LC,即

prefix? + action (A) + high context (HC) + low context? (LC)
 
nameprefixAHCLC
getUser   get User  
getUserMessages   get User Messages
handleClickOutside   handle Click Outside
shouldDisplayMessage should Display Message  

 

 

上下文的顺序可能会影响变量的含义,例如shouldUpdateComponent意味着将要更新一个组件,换一下顺序变成shouldComponentUpdate,意味着组件将做自我更新。

动作

函数名称的动词部分,是描述函数作用的最终要的部分,如:

  • getXXX,表示获取数据
  • setXXX,表示设值
  • resetXXX,重置数据
  • fetchXXX,请求数据
  • removeXXX,移除数据,表示从某处删除某物
  • deleteXXX,删除数据,表示完全清楚某些事物
  • composeXXX,从现有数据创建新数据
  • handleXXX,处理某个动作

上下文

函数或方法通常是某些事物的动作,结合上下文,能够明确其操作的对象,或者要能反映出函数预期的数据类型。一些特定的情况下允许省略上下文,例如在JavaScript中,filter对Array进行操作很常见,就没必要命名为filterArray了。

/* A pure function operating with primitives */
function filter(predicate, list) {
  return list.filter(predicate)
}

/* Function operating exactly on posts */
function getRecentPosts(posts) {
  return filter(posts, (post) => post.date === Date.now())
}

前缀

前缀用来增强变量的含义,如:

  • is,描述特征或状态,通常是boolean类型
  • has,描述是否具有某个状态或值,通常是boolean类型
  • should,反映肯定的条件,加上特定的执行动作
  • min/max,描述边界或界限时使用
  • prev/next,指示前一个或下一个状态

单复数

变量名称是单数还是复数,取决于值的单数还是复数。

/* Bad */
const friends = 'Bob'
const friend = ['Bob', 'Tony', 'Tanya']

/* Good */
const friend = 'Bob'
const friends = ['Bob', 'Tony', 'Tanya']

 

网文地址

 

标签:Good,const,编程,filter,Bad,网文,命名,上下文
From: https://www.cnblogs.com/thingk/p/18555377

相关文章

  • 第 1 章 并发编程线程基础
    目录1.1什么是线程 1.2线程创建与运行 1、继承Thread类方式的实现。2、实现Runnable接口的run方法3、使用FutureTask方式1.3线程通知与等待1.wait()函数2.wait(longtimeout)函数3.wait(longtimeout,intnanos)函数4.notify()函数5.notifyAll()......
  • ReNamer Pro 7.5 中文绿色便携专业版-文件重命名工具
    前言    我们日常生活和工作中所涉及的文件数量日益增多。无论是图片、音频、视频还是各种文档,这些文件在存储、管理和分享时,都需要有一个清晰、有序的文件命名规则。然而,手动重命名大量文件不仅耗时耗力,而且容易出错,这对于追求效率和准确性的现代生活来说显然是不现实......
  • .net 非阻塞的异步编程 及 线程调度过程
    本文主要分为三个部分:1、语法格式2、线程调度情况3、编程注意事项*阅读提示:鼠标悬停在章节标题上可见文章目录  异步编程(TaskAsynchronousProgramming,TAP),一种编程模式(Task-basedAsynchronousPattern)。TAP是.NET中推荐的异步编程模式,基于 Task 和 Task<TR......
  • C++编程:通过多线程与协程优化阻塞型任务的调度性能
    文章目录0.引言1.多线程VS多线程+协程1.1示例1:使用传统的多线程进行矩阵乘法1.2.示例2:使用协程优化阻塞型任务3.分析与对比0.引言我们知道:多线程:适用于处理计算密集型任务或IO操作较少的场景,但会因为线程切换和创建销毁的开销而影响性能。协程:适用于处......
  • 从0开始学习Linux——Shell编程详解【01】
    期目录:从0开始学习Linux——简介&安装从0开始学习Linux——搭建属于自己的Linux虚拟机从0开始学习Linux——文本编辑器从0开始学习Linux——Yum工具从0开始学习Linux——远程连接工具从0开始学习Linux——文件目录从0开始学习Linux——网络配置从0开始学习Linux——防......
  • JavaScript函数式编程指南
    前言本文内容来自于《JavaScript函数式编程指南》,可以看作是对原书内容进行提炼和总结,若您有需要或感觉有出入请参原书。一、走进函数式面向对象编程(OOP)通过封装变化使得代码更易理解。函数式编程(FP)通过最小化变化使得代码更易理解。——MichaelFeathers(Twitter)函......
  • 哋它亢编程语言机器学习框架(如TensorFlow、PyTorch等)
    “哋它亢”作为一种新一代机器学习与深度学习的编程语言,虽然现实中并不存在这种语言,但我们可以基于其被假定为高性能和强编程能力的特性,来构想其可能的优势,并尝试给出一个示例代码。以下是对“哋它亢”编程语言优势的详细阐述及示例代码。哋它亢编程语言“哋它亢”编程语言的优......
  • ReNamer Pro 7.5 中文绿色便携专业版-文件重命名工具
    前言我们日常生活和工作中所涉及的文件数量日益增多。无论是图片、音频、视频还是各种文档,这些文件在存储、管理和分享时,都需要有一个清晰、有序的文件命名规则。然而,手动重命名大量文件不仅耗时耗力,而且容易出错,这对于追求效率和准确性的现代生活来说显然是不现实的今天介绍的......
  • 【IDER、PyCharm】智能AI编程工具完整教程:ChatGPT Free - Support Key call AI GPT-o1
    文章目录CodeMoss简介CodeMoss的模型集成如何安装和配置CodeMossIDER插件安装步骤CodeMoss的实战使用AI问答功能代码优化与解释优化这段代码解释这段代码文件上传与对话联网查询与GPT助手联网查询GPT助手提升开发效率的最佳实践结语更多文献CodeMoss......
  • 现场可编程门阵列英特尔® Stratix® 10 GX FPGA 1SG166HN2F43E2LG设计用于满足高吞吐
    英特尔®Stratix®10GXFPGA包含多达1020万个LE。它们在单独的收发器块上配备多达96个通用收发器,可提供2666MbpsDDR4外部内存接口性能。这些收发器可提供高达28.3Gbps的短距离和跨背板传输。这些设备针对需要最高收发器带宽和核心结构性能的FPGA应用而优化。优......