文章摘要
文章批评现代软件开发中工具命名随意化的问题,指出程序员倾向于使用无意义的随机名词、神话生物或虚构角色命名工具,违背了专业命名应具备描述性的原则,导致沟通和理解困难。作者引用Richard Stallman的观点,强调工具名称应帮助用户记住其功能。
文章总结
标题:程序员在工具命名上已迷失方向
文章核心内容:
2022年EmacsConf会议上,Richard Stallman在演讲中指出软件包应该使用"有助于记忆其功能的名字",这一观点揭示了现代软件开发中的命名乱象。当前行业存在将工具随意命名为随机名词、神话生物或虚构角色的不良倾向,这种状况在其他工程领域是难以想象的。
以实际案例为例:当开发者描述"使用Viper进行配置管理,Cobra处理CLI,Melody管理WebSocket连接,Casbin控制权限,Asynq负责任务队列"时,这些名称与实际功能完全脱节。相比之下,传统工程领域(如金门大桥、胡佛水坝)和早期计算机工具(grep、awk、sed)的命名都严格遵循"名实相符"原则。
这种命名乱象带来的认知负担不容忽视: 1. 每个晦涩名称都会消耗开发者额外的理解时间 2. 在架构讨论中,开发者需要额外精力解码名称含义 3. 与材料科学等领域的专业术语相比,软件命名严重缺乏信息量
针对常见的辩解,文章逐一反驳: - "好记的名字利于营销":基础设施工具不是消费品 - "描述性名称太无聊":专业工具应以清晰性为先 - "只是为了好玩":这种乐趣会转嫁认知成本给他人 - "好名字都被占了":可以使用命名空间、前缀等解决方案
改进建议: 1. 优先使用功能描述性名称 2. 必要时采用复合词 3. 可将趣味元素作为项目吉祥物(如PostgreSQL的大象) 4. 命名前自问:"土木工程师会这样命名桥梁支撑系统吗?"
文章强调:清晰的命名不是无聊,而是对使用者时间和认知资源的尊重。虽然这不是行业最紧迫的问题,但值得引起重视。
(注:删减了部分历史细节和与核心论点关联性较弱的内容,保留了关键案例和论证逻辑)
评论总结
以下是评论内容的总结:
支持描述性命名
- 功能变化论:工具功能会变化,描述性名称会过时或误导(marifjeren:"Your 'silicon-valley-bank-integrator' tool will eventually need to be updated")
- 竞争与辨识度:通用名称在开源生态中易冲突,需加入作者前缀(formula1:"include the author name for each package")
- 科学领域先例:其他领域(如化学、生物学)也广泛使用非描述性名称(colechristensen:"Curium, Einsteinium... named after people or places")
反对描述性命名
- 营销与记忆性:独特名称更易传播(notpachet:"names should be exotic, flamboyant")
- 历史惯例:早期编程语言(如FORTRAN)缩写同样不直观(NotGMan:"I never know... BASIC stands for...")
- 企业实践:内部项目常因功能扩展改用随机代号(fusslo:"rename it to some random name - state names, lake names")
中立观点
- 名称本质:名称仅是标识符,功能需额外说明(TehCorwiz:"Names are only useful for distinct identification")
- 领域差异:终端产品需品牌化,底层工具需清晰性(alienbaby:"Name your things in a way related to what they do")
争议焦点
- 行业对比:作者认为软件命名特立独行,但评论指出其他领域(如微处理器、药品)同样如此(jameshart:"Have you specced a microprocessor lately?")
- 实用性矛盾:描述性名称易过时,随机名称难理解(collinmcnulty:"descriptive name soon didn't tell you anything useful")
典型引用
支持随机命名:
"Using gibberish or mythological names gives a nice memorable name"(marifjeren)
"IUPAC names are just a convenient way to serialize data"(colechristensen)反对随机命名:
"What does chef do? Garden? Pig? Burp? Nonsense."(alienbaby)
"Names like Hunchentoot... cause people to dismiss good software"(andrewl)
总结:评论呈现两极化,支持者强调功能明确性和专业规范,反对者主张营销价值与行业传统,而中立观点认为名称本质是符号,需结合上下文理解。