paint-brush
如何快速找见代碼中的臭区域 [第 XLVI 区域] 经过了@mcsee
635 讀數
635 讀數

如何找到代码中的臭部分 [第 XLVI 部分]

路经 Maximiliano Contieri10m2023/11/27
Read on Terminal Reader

太長; 讀書

牛仔程序员不遵循最佳实践。 他们不遵循团队的建议。 牛仔编码通常被认为是一种不专业且有风险的软件开发方法,因为它可能导致代码难以维护且容易出错。
featured image - 如何找到代码中的臭部分 [第 XLVI 部分]
Maximiliano Contieri HackerNoon profile picture
您的编号很槽糕,因概率有有很多问题能能对其做好复制或改进方案。


几乎数哪些酸味只要表达可能性有什么问题。往往,他们任何并不需用被修复手机……(不够,你应调查一番。)

以前的代码味道

您可以在这里找到所有以前的代码味道(第一部分 - XLV)。


给咱们立刻...

代码气味 226 - 混合优先级

又一艘坠毁的航天器。另一个软件问题


TL;DR:设计构思并测试手机软件手机软件。比硬件系统便谊

问题

解决方案

  1. 创建准确的模拟
  2. 制作软件

语境

于 2023 年 8 月 19 祝日月球的表面的表面失事。


距伊朗软迫降太空南极仍有 4 天。


提示,以下控制指令共享服务一部传输线,和先行级不稳确。


航天器的软件故障由来已久

示例代码

错误的

class TaskManager: def __init__(self): self.tasks = [] def add_task(self, task, priority): self.tasks.append((task, priority)) def execute_tasks(self): # No sorting for task, _ in self.tasks: task.execute() class Task: def __init__(self, name): self.name = name def execute(self): print(f"Executing task: {self.name}") task_manager = TaskManager() highPriorityTask = Task("Slow down") mediumPriorityTask = Task("Take Photos") reviveKlaatu = Task("Klaatu barada nikto") # unsorted task_manager.add_task(mediumPriorityTask, 2) task_manager.add_task(highPriorityTask, 1) task_manager.add_task(reviveKlaatu, 3) task_manager.execute_tasks()

正确的

class TaskManager: def __init__(self): self.tasks = [] def add_task(self, task, priority): self.tasks.append((task, priority)) def execute_tasks(self): # Sort tasks by priority (high to low) self.tasks.sort(key=lambda x: x[1], reverse=True) for task, _ in self.tasks: task.execute() class Task: def __init__(self, name): self.name = name def execute(self): print(f"Executing task: {self.name}") task_manager = TaskManager() highPriorityTask = Task("Slow down") mediumPriorityTask = Task("Take Photos") reviveKlaatu = Task("Klaatu barada nikto") # unsorted task_manager.add_task(mediumPriorityTask, 2) task_manager.add_task(highPriorityTask, 1) task_manager.add_task(reviveKlaatu, 3) task_manager.execute_tasks()

检测

  • [x]手册
这里是装修设计的味儿

标签

  • 可靠性

结论

建立平台引擎并虚拟真人真事性和非真人真事性的环境

关系

代码气味 198 - 隐藏的假设

更多信息

免责声明

代码味道是我的观点


解析刹车系统不存在一切意向来创造自己一切的东西。它可不可以做一切.我明白是如何命令提示符它施行的事实……但它很也许 对科学课本来导致间接的和主动的直接影响。


艾达·洛夫莱斯

软件工程名言


代码气味 227 - 牛仔编码

把牛仔留给好莱坞电影吧。


TL;DR:是公司应用软件工程师开发代码怎么用

问题

  • 可读性
  • 代码不可靠
  • 人员管理问题
  • 缺乏

解决方案

  1. 编写出的专业源代码。


  2. 动用申明性的非神迷名称大全。

语境

牛仔裤编译软件工程师不但要遵循更好实践性。


自己不遵守管理团队的可以。


牛仔衣编码查询基本上被认同有的是种不正规专业且有风险分析的软文开发管理方案,而且它应该会导致编号没办法运营且会出现差错。


牛仔服应用前端工程师全部都是最美家庭;当然,。

示例代码

错误的

# Very simple example # Compute the sum of two numbers without any structure or best practices. num1 = input("Enter the first number: ") num2 = input("Enter the second number: ") # WARNNING!!!! Don't remove the line below !!!!! # (Unpleasant comment) res = num1 + num2 # (No data type checking or error handling) print("The sum is: " + result) # (No validation or formatting) # (No good names, no functions, no error handling, no testing, # no version control, and no structure.)

正确的

def add_numbers(): try: firstAddend = float(input("Enter the first number: ")) secondAddend = float(input("Enter the second number: ")) total = firstAddend + secondAddend return total except ValueError: print("Invalid input. Please enter valid numbers.") return None def main(): total = add_numbers() if total is not None: print("The sum is: {:.2f}".format(sum)) if __name__ == "__main__": main()

检测

  • [x]手册


您都可以配置条件方式来以防止此类编号规则实践活动并全面提升管理团队施工。

例外情况

  • 非常小的个人项目

标签

  • 声明式

结论

PC软件定制开发是团体达成合作的。

关系

代码味道 06 - 太聪明的程序员

代码气味 02 - 常量和幻数

代码气味 105 - 喜剧演员的方法

更多信息

制作人员

在上拍攝的拍照
来电脑的隐患并不是我们大家结果是会看起来像人体相同小聪明,即使我们大家一起答应与我们大家相向而行。

伯纳德·阿维沙伊


代码气味 228 - 每个文件有多个类

超过一堂课就乱了。


TL;DR:使用青睐点转移前提和文书进行

问题

  • 代码组织
  • 耦合
  • 自动加载问题
  • 调试
  • 版本控制和合并冲突

解决方案

  1. 每种文件名称宣称有一个类


  2. 实用种类范围内

语境

在动用档案系统软件声明书类的程序语言中,没个档案一款 类一般被判定是最加实际 。


这类的办法促进企业提升 码结构和可运营维护性,并限制隐藏的难题。


您应该将排列顺序地方聚集到该项目机构中的分开列表中。


这样的,您能能养护逻辑学且高效化的代码是什么库,时避免出现在每个档案中宣称很多类的故障 。

示例代码

错误的

<? namespace MyNamespace; class Class1 { public function sayHello() { echo "Hello from Class1!\n"; } } class Class2 { public function sayHello() { echo "Hello from Class2!\n"; } }

正确的

<? namespace MyNamespace; class Class1 { public function sayHello() { echo "Hello from Class1!\n"; } }
 <? namespace MyNamespace; class Class2 { public function sayHello() { echo "Hello from Class2!\n"; } }

检测

  • [x]自动
很多的标准的都硬性进行此细则

标签

  • 耦合

结论

让您的代码是什么井井有一,并遵从之比的标准单位。

关系

代码气味 48 - 没有标准的代码

更多信息

制作人员

像片由在上拍摄技巧
不存在消费需求或设定,编程学习那就是向空文档文本放入差错的美术。


路易斯·施瑞格利


代码气味 229 - 繁文缛节

您的代码过于复杂。


TL;DR:以防意想不到的缜密性和官僚现实主义

问题

解决方案

  1. 使用MAPPER将职责分配给现实世界的对象。

语境

“繁文缛节”码一种味道能够与过渡要的更局限性、官僚自由主义或过渡设置相关的英文,许多设置使码库更难明白或维保。

示例代码

错误的

class VotingSystem: def __init__(self, config): self.config = config def validate_voter(self, voter_id): if self.config['voter_verification_enabled']: # Code to verify the voter's identity goes here def cast_vote(self, voter_id, candidate): if self.config['voting_enabled']: # Code to record the vote goes here def generate_vote_report(self): if self.config['generate_report']: # Code to generate a voting report goes here def audit_voting_system(self): if self.config['audit_enabled']: # Code to perform an audit of the voting system goes here # ... other voting-related methods ... # Usage config = { 'voter_verification_enabled': True, 'voting_enabled': False, 'generate_report': False, 'audit_enabled': True } voting_system = VotingSystem(config) # Voter validation, voting, report generation, # and auditing are handled based on the configuration.

正确的

class VoterVerification: def verify_voter(self, voter_id): # Code to verify the voter's identity goes here class VotingMachine: def cast_vote(self, voter_id, candidate): # Code to record the vote goes here class VoteReporter: def generate_report(self): # Code to generate a voting report goes here class VotingAuditor: def audit_voting_system(self): # Code to perform an audit of the voting system goes here # Usage voter_verification = VoterVerification() voting_machine = VotingMachine() vote_reporter = VoteReporter() voting_auditor = VotingAuditor() # Voter verification, vote casting, report generation, # and auditing are handled separately.

检测

  • [x]半自动
一部分软件工具也许会否定您时未用不要要的承担来热胀您的的对象。

标签

  • 腹胀

结论

繁文缛节的代码是什么感觉很很大,这是由于联合开发员工须要阅读较为复杂的分配来敲定怎样模块始终处于活跃程序。


这不仅仅添加了并非要的复杂的性,特别还添加了也许 性印象整体完正性的失败选配的也许 性性。

关系

代码气味 54 - 锚船

免责声明

代码味道是我的观点

制作人员

照片图片根据上的
工具的一两个谬论:如何它很好的,或许们不影响其余的东西,它就要一直很好的。

杰西卡·克尔


代码气味 230 - 薛定谔代码

你的代码既死又活。


TL;DR:缜密察看争夺先决条件

问题

  • 最小意外违反原则

解决方案

  1. 尽量避免之间的竞争状况


  2. 不要全局性变量类型


  3. 采用有效的

语境

薛定谔代碼是可以一起始终处于两种方式有所差异工作的状态的代碼,但代碼的工作的状态要等施行时就可以来确定。


中国码是指相互竞争具体条件时,一些中国码依赖性于可由任何线程或系统进程就要变更的全部变数的环境时,可能会会突发这些情況。

示例代码

错误的

import threading cats_alive = 0 def thread_1(): cats_alive += 1 def thread_2(): cats_alive -= 1 if cats_alive > 0: feedThem() # The value of cats_alive is indeterminate, # so the code can be in either of the two states: # # 1. cats_alive > 0 and feedThem() is called. # 2. cats_alive <= 0 and feedThem() is not called.

正确的

import threading lock = threading.Lock() cats_alive = 0 def thread_1(): with lock: cats_alive += 1 def thread_2(): with lock: cats_alive -= 1 if cats_alive > 0: feedThem() # With the lock, the two threads cannot access # the `cats_alive` variable at the same time. # This means that the value of `cats_alive` is always determined, # and the program will not exhibit Schrödinger code behavior.

检测

  • [x]手册
对潜在代碼是什么采取代碼是什么审批

标签

  • 并发性
  • 全局变量

结论

为了更好地预防薛定谔代码怎么用,请预防竟争必备条件并预防忽略于可由许多线程或过程改换的全局性因素的模式。


这样您需用在码中利用静态字段,请确保安全生产其有效导入。

关系

代码气味 198 - 隐藏的假设

代码气味 32 - 单例

代码气味 60 - 全局类

制作人员

照片头像由上的拍照
您可能一切执行前端工程师做的后某件事只是弄乱内睡眠状态

艾伦·凯


这周,还也会有 5 种味道。
바카라사이트 바카라사이트 온라인바카라