”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 代码气味 - 语言混乱

代码气味 - 语言混乱

发布于2024-11-19
浏览:298

过于复杂的命名会导致混乱

TL;DR:命名很难,不要因为不必要的意外复杂性而让它变得更难。

问题

  • 不清晰、误导性、含糊和不明确的名称

  • 冗余术语

  • 令人困惑的抽象

  • 隐秘缩写

解决方案

  1. 简化命名约定

  2. 确保一致性

  3. 避免不必要的行话

  4. 根据行为使用描述性名称

  5. 保持术语一致

语境

路德维希·维特根斯坦认为,许多混乱是由语言滥用引起的。

当您的名称过于复杂、混合隐喻或使用不一致的术语时,就会发生这种情况。

当你不清晰地命名类、方法或变量时,你就创建了一个其他人难以导航的语言迷宫。

这会导致错误,使维护变得更加困难,并导致团队沮丧。

示例代码

错误的

public class AbstractDataHandlerManager {
    private String dtStr;

    public void execProcessingOps(String input) {
        if (dtStr != null && !dtStr.isEmpty()) {
            // process
        }
    }
}

正确的

public class SETIProcessor {

    public void processSignal(String input) {      
            // process
        }
    }
}

检测

[X] 手册

当名称开始变长,或者当您经常看到“Abstract”、“Manager”、“Handler”、“Helper”或“Data”时,您可以检测到这种气味。

另一个标志是,您必须向其他开发人员解释名称的含义,例如在代码审查中。

标签

  • 命名

等级

[X] 初学者

人工智能一代

人工智能生成器通常通过生成试图涵盖所有可能的上下文的冗长和通用名称来创建这种气味。

他们是许多领域的专家并编写代码,但除非得到指示,否则他们通常不会同时做这两件事。

人工智能检测

人工智能生成器有时可以通过简单的重构指令(例如“简化名称”或“删除冗余术语”)来修复这种气味,但很难进行更深入的上下文理解。

结论

代码中的语言混乱会导致不必要的复杂性。

使用清晰、一致和直接的命名使您的代码更易于阅读和维护。

关系

更多信息

维特根斯坦的语言混乱概念

免责声明

代码味道是我的观点。

制作人员

照片由 Mimi Thian 在 Unsplash 上拍摄


清晰语言的最大敌人是不真诚。

乔治·奥威尔


本文是 CodeSmell 系列的一部分。

版本声明 本文转载于:https://dev.to/mcsee/code-smell-265-linguistic-confusion-2ihj?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何在 C++ 中将模板化结构/类声明为友元?
    如何在 C++ 中将模板化结构/类声明为友元?
    将模板化结构/类声明为友元在 C 领域,将模板化结构或类声明为友元可能会出现与语法相关的障碍。要实现此目的,请考虑以下方法:template <typename T> struct foo { template <typename> friend class ...
    编程 发布于2024-11-19
  • TensorFlow 与 PyTorch:您应该使用哪个?
    TensorFlow 与 PyTorch:您应该使用哪个?
    在深度学习领域,TensorFlow 和 PyTorch 是研究人员、开发人员和数据科学家等使用的两个最著名的框架。两者都提供了用于创建神经网络、训练机器学习模型和执行各种人工智能任务的强大工具。然而,尽管它们有共同的目的,但每个框架都有独特的功能,使它们与众不同。在决定使用哪一个来满足您的特定需求...
    编程 发布于2024-11-19
  • 如何在 PHP 中循环 JSON 数组?
    如何在 PHP 中循环 JSON 数组?
    在 PHP 中循环 JSON 数组Web 开发中的一项常见任务涉及处理以 JSON 格式存储的数据。 PHP 提供了一种简单的方法来解析和迭代 JSON 数组。JSON 解码第一步是使用 json_decode 将原始 JSON 字符串解码为 PHP 数组() 功能。此函数将 JSON 数据转换为具...
    编程 发布于2024-11-19
  • 在 Go 中使用 WebSocket 进行实时通信
    在 Go 中使用 WebSocket 进行实时通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSocke...
    编程 发布于2024-11-19
  • Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta:列偏移的删除和恢复Bootstrap 4 在其 Beta 1 版本中引入了重大更改柱子偏移了。然而,随着 Beta 2 的后续发布,这些变化已经逆转。从 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    编程 发布于2024-11-19
  • 尽管代码有效,为什么 POST 请求无法捕获 PHP 中的输入?
    尽管代码有效,为什么 POST 请求无法捕获 PHP 中的输入?
    解决 PHP 中的 POST 请求故障在提供的代码片段中:action=''而不是:action="<?php echo $_SERVER['PHP_SELF'];?>";?>"检查 $_POST数组:表单提交后使用 var_dump 检查 $_POST 数...
    编程 发布于2024-11-19
  • 如何在 MySQL 中查找子字符串的第二次或第三次出现?
    如何在 MySQL 中查找子字符串的第二次或第三次出现?
    在 MySQL 中查找子字符串的第二个或第三个索引在数据库中处理字符串时,通常需要定位位置特定子串的。如果简单的 LIKE 查询不够,您可能需要一种方法来精确识别该子字符串特定出现的索引。问题:您有一个空格-分隔的字符串,需要根据字符串的相对位置提取字符串的特定部分。例如,给定字符串“AAAA BB...
    编程 发布于2024-11-19
  • 拥有网站的主要好处
    拥有网站的主要好处
    网站可以为您的公司带来多种好处。它可以通过改善消费者关系和提高您的网络知名度来帮助您建立声誉。 除了提供展示您的商品或服务的舞台之外,它还保证与潜在客户的持续互动。一个既美观又易于使用的网站需要有效的网站建设。一般来说,网站是促进企业扩张和成功的有效工具。 介绍 在当前的数字时代,任...
    编程 发布于2024-11-19
  • 我们如何有效地约束 Go 1.18 泛型中的可索引类型?
    我们如何有效地约束 Go 1.18 泛型中的可索引类型?
    Go 1.18 泛型中的索引约束随着 Go 1.18 中泛型的引入,开发人员有机会实现适用于特定类型的算法类型。一种常见的要求是使用支持索引的类型,例如数组、切片、映射和字符串。可索引约束将类型参数限制为可索引类型,考虑使用以下带有并集的约束:type Indexable interface { ...
    编程 发布于2024-11-19
  • 除了“if”语句之外:还有什么地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    除了“if”语句之外:还有什么地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    无需强制转换即可上下文转换为 bool您的类定义了对 bool 的显式转换,使您能够在条件语句中直接使用其实例“t”。然而,这种显式转换提出了一个问题:“t”在哪里可以在不进行强制转换的情况下用作 bool?上下文转换场景C 标准指定了四种值可以根据上下文转换为 bool 的主要场景:语句:if、w...
    编程 发布于2024-11-19
  • 为什么“go install”不能与 macOS 上的 zsh 一起使用?
    为什么“go install”不能与 macOS 上的 zsh 一起使用?
    macOS 中“Go install 无法与 zsh 配合使用”问题排查在 zsh 中遇到“go install”命令问题时,这一点至关重要验证您的配置设置。如果您已将“export PATH”行添加到 ~/.bash_profile 和 ~/.zshrc,但仍然遇到困难,则可能需要额外的配置。提供...
    编程 发布于2024-11-19
  • 如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 识别今天生日的用户使用 MySQL 确定今天是否是用户的生日涉及查找生日匹配的所有行今天的日期。这可以通过一个简单的 MySQL 查询来实现,该查询将存储为 UNIX 时间戳的生日与今天的日期进行比较。以下 SQL 查询将获取今天有生日的所有用户: FROM USERS ...
    编程 发布于2024-11-19
  • 如何高效检索 Go 字符串的最后一个字符?
    如何高效检索 Go 字符串的最后一个字符?
    检索 Go 字符串的最后一个字符在 Go 中,处理字符串时会出现一个常见的需求:从 Go 字符串中检索最后 X 个字符给定的字符串。虽然 string 包没有为此任务提供特定函数,但有一些有效的方法可以使用切片表达式来完成此任务。要获取字符串的最后 N 个字符,请使用以下切片表达式语法:string...
    编程 发布于2024-11-19
  • FastAPI:如何使用 Pydantic 声明查询参数
    FastAPI:如何使用 Pydantic 声明查询参数
    它大约三周前发布,是 FastAPI 最受期待的功能之一。至少当我们谈论 Pydantic Models FastAPI 时。 是的,我说的是使用 Pydantic 模型来映射查询参数的能力。 所以在这篇文章中,我将尽力向您展示一切?可以和?无法解决这个问题?: ?映射查询参数 要开...
    编程 发布于2024-11-19
  • 测试自动化工具:综合指南
    测试自动化工具:综合指南
    测试自动化工具简介 测试自动化工具已成为现代软件开发的重要组成部分,使团队能够简化测试流程并确保高质量的发布。在当今快节奏的开发环境中,手动测试已经跟不上持续集成和交付的速度。测试自动化工具允许团队自动执行重复任务,减少人为错误并腾出时间进行更复杂的测试工作。 为什么使用测试自动化工具? 自动化工...
    编程 发布于2024-11-19

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3