如何拥有一个优雅的变量名?

科技继续进击 2024-08-07 12:44:38

你好,我是坚持分享干货的 EarlGrey,翻译出版过《Python编程无师自通》、《Python并行计算手册》等技术书籍。

如果我的分享对你有帮助,请关注我,一起向上进击。

来源:网络

我有一个同事,能力很强,BUG率很低。

但我每次看他的变量命名,都有种想打人的冲动,也不是我太菜,只是.....(直接上代码吧。)

totalNumberOfItems = 150averageProcessingTime = 5.25maximumAllowedConnections = 100configurationSettings = {"timeout": 30, "retries": 5}initializationParameters = {"mode": "auto", "threshold": 0.75}temporaryFilePath = "/tmp/data.txt"currentUserSession = "abc123xyz"databaseConnectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;"applicationErrorMessage = "An unexpected error occurred."userAuthenticationToken = "abcdef123456"

这样看起来还好,但是结合到到应用中就会变成这样:

public AppDemo {public static void main(String[] args) {// 定义变量int totalNumberOfItems = 150;double averageProcessingTime = 5.25;int maximumAllowedConnections = 100;// 配置设置 Map<String, Integer> configurationSettings = new HashMap<>(); configurationSettings.put("timeout", 30); configurationSettings.put("retries", 5);// 初始化参数 Map<String, Object> initializationParameters = new HashMap<>(); initializationParameters.put("mode", "auto"); initializationParameters.put("threshold", 0.75);// 临时文件路径 String temporaryFilePath = "/tmp/data.txt";// 当前用户会话 String currentUserSession = "abc123xyz";// 数据库连接字符串 String databaseConnectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;";// 应用程序错误信息 String applicationErrorMessage = "An unexpected error occurred.";// 用户认证令牌 String userAuthenticationToken = "abcdef123456";// 输出变量值 System.out.println("Total Number of Items: " + totalNumberOfItems); System.out.println("Average Processing Time: " + averageProcessingTime); System.out.println("Maximum Allowed Connections: " + maximumAllowedConnections); System.out.println("Configuration Settings: " + configurationSettings); System.out.println("Initialization Parameters: " + initializationParameters); System.out.println("Temporary File Path: " + temporaryFilePath); System.out.println("Current User Session: " + currentUserSession); System.out.println("Database Connection String: " + databaseConnectionString); System.out.println("Application Error Message: " + applicationErrorMessage); System.out.println("User Authentication Token: " + userAuthenticationToken); }}

如果业务逻辑再复杂点,代码我觉得就不能看了。

我觉得会命名简洁的缩写变量名让代码观感有质的提升!!

请看以下代码!

import java.util.HashMap;import java.util.Map;public AppDemo {public static void main(String[] args) {// 定义变量int ttlItems = 150;double avgTime = 5.25;int maxConns = 100;// 配置设置 Map<String, Integer> config = new HashMap<>(); config.put("timeout", 30); config.put("retries", 5);// 初始化参数 Map<String, Object> initParams = new HashMap<>(); initParams.put("mode", "auto"); initParams.put("threshold", 0.75);// 临时文件路径 String tmpPath = "/tmp/data.txt";// 当前用户会话 String curSess = "abc123xyz";// 数据库连接字符串 String dbStr = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;";// 应用程序错误信息 String errMsg = "An unexpected error occurred.";// 用户认证令牌 String authTok = "abcdef123456";// 输出变量值 System.out.println("Total Items: " + ttlItems); System.out.println("Average Time: " + avgTime); System.out.println("Maximum Connections: " + maxConns); System.out.println("Configuration Settings: " + config); System.out.println("Initialization Parameters: " + initParams); System.out.println("Temporary File Path: " + tmpPath); System.out.println("Current User Session: " + curSess); System.out.println("Database Connection String: " + dbStr); System.out.println("Application Error Message: " + errMsg); System.out.println("User Authentication Token: " + authTok); }}如何命名优雅的缩写变量名?

变量名缩写规则通常涉及以下几项原则:

简洁明了

变量名应尽量简短,但同时要有意义,能够反映变量的内容或用途。

例如,totalCount 可以缩写为 tCount。

去除元音

可以去掉变量名中的元音以缩短长度。

例如,comment 可以缩写为 cmt,total 可以缩写为 ttl。

一个单词超过8个字母的,建议使用缩写。

使用驼峰式命名

对于多个单词组成的变量名,采用驼峰式命名法,使每个单词的首字母大写,紧凑在一起。

例如,userName 可以缩写为 uName。

避免歧义

即使是缩写,也要确保变量名不易混淆或产生歧义。

例如,maximum 可以缩写为 max,但不要缩写为 m,因为太短且不具备辨识度。

开发常用缩写参照

Identifier(标识符)

identifier -> id

Message(消息)

message -> msgmessages -> msgs

Number(数字)

number -> num

Length(长度)

length -> len

Index(索引)

index -> idx

Count(计数)

count -> cnt

Value(值)

value -> val

Parameter(参数)

parameter -> paramparameters -> params

Temporary(临时)

temporary -> tmp

Configuration(配置)

configuration -> configconfiguration -> cfg

Information(信息)

information -> info

Database(数据库)

database -> db组合词缩减

User Profile(用户资料)

userProfile -> uProf

Session Token(会话令牌)

sessionToken -> sessTok

Transaction ID(交易ID)

transactionID -> transID

Maximum Value(最大值)

maximumValue -> maxVal

Minimum Value(最小值)

minimumValue -> minVal

File Name(文件名)

fileName -> fName

Database Connection(数据库连接)

databaseConnection -> dbConn

Configuration File(配置文件)

configurationFile -> cfgFile

Application Programming Interface(应用程序接口)

applicationProgrammingInterface -> api

Primary Key(主键)

primaryKey -> pk其他

用户信息相关

userName -> uNameuserEmail -> uEmailuserPassword -> uPwd

文件操作相关

filePath -> fPathfileSize -> fSizefileExtension -> fExt

时间相关

currentTime -> curTime

网络请求相关

requestURL -> reqURLresponseData -> resDataresponseCode -> resCode最后

你们有见过哪种变量名很长,可以在评论区留言,让大家一起讨论下如何缩短它!

- EOF -

文章已经看到这了,别忘了在右下角点个“赞”和“在看”鼓励哦~

推荐阅读 点击标题可跳转

1、Python 项目工程化最佳实践

2、Python 可以比 C 还要快!

3、streamlit,一个超强的 Python 库

4、豆瓣8.9分的C++经典之作,免费送!

5、Python 3.12 版本有什么变化?

最近我开了一家淘宝店,名字叫【打破壁垒】,主打程序开发相关付费素材、工具的共享类商品,帮助大家降低试错和使用成本。欢迎大家关注。

回复下方「关键词」,获取优质资源

回复关键词「 pybook03」,领取进击的Grey与小伙伴一起翻译的《Think Python 2e》电子版回复关键词「书单02」,领取进击的Grey整理的 10 本 Python 入门书的电子版

告诉你更多细节干货

欢迎围观我的朋友圈

👆每天更新所想所悟

0 阅读:0

科技继续进击

简介:感谢大家的关注