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

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

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

    来源:网络

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

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

    totalNumberOfItems = 150
    averageProcessingTime = 5.25
    maximumAllowedConnections = 100
    configurationSettings = {"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 class 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 class 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 可以缩写为 cmttotal 可以缩写为 ttl

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

    使用驼峰式命名

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

    例如,userName 可以缩写为 uName

    避免歧义

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

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

    开发常用缩写参照

    1. Identifier(标识符)

    • identifier -> id

    Message(消息)

    • message -> msg

    • messages -> msgs

    Number(数字)

    • number -> num

    Length(长度)

    • length -> len

    Index(索引)

    • index -> idx

    Count(计数)

    • count -> cnt

    Value(值)

    • value -> val

    Parameter(参数)

    • parameter -> param

    • parameters -> params

    Temporary(临时)

    • temporary -> tmp

    Configuration(配置)

    • configuration -> config

    • configuration -> cfg

    Information(信息)

    • information -> info

    Database(数据库)

    • database -> db

    组合词缩减

    1. 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

    其他

    1. 用户信息相关

    • userName -> uName

    • userEmail -> uEmail

    • userPassword -> uPwd

    文件操作相关

    • filePath -> fPath

    • fileSize -> fSize

    • fileExtension -> fExt

    时间相关

    • currentTime -> curTime

    网络请求相关

    • requestURL -> reqURL

    • responseData -> resData

    • responseCode -> resCode

    最后

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

    - EOF -

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

    推荐阅读  点击标题可跳转

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

    2、Python 可以比 C 还要快!

    3、streamlit,一个超强的 Python 库

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

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

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

    bef66f360474a1a3752fe4b16a2db090.jpeg

    长按扫描下方二维码,然后点击页面中的【打开淘宝】,即可进入店铺:

    64210ef5ab1851259b88097030eaa026.png

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

    回复关键词「 pybook03」,领取进击的Grey与小伙伴一起翻译的《Think Python 2e》电子版

    回复关键词「书单02」,领取进击的Grey整理的 10 本 Python 入门书的电子版

    👇关注我的公众号👇

    告诉你更多细节干货

    d6a8c044620fe5b9589357c82e588513.jpeg

    欢迎围观我的朋友圈

    👆每天更新所想所悟

    登录后您可以享受以下权益:

    ×
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

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

    余额充值
    程序员都在用的中文IT技术交流社区

    程序员都在用的中文IT技术交流社区

    专业的中文 IT 技术社区,与千万技术人共成长

    专业的中文 IT 技术社区,与千万技术人共成长

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    客服 返回顶部