为什么干净的代码很重要
来源:dev.to
时间:2024-07-10 12:24:52 272浏览 收藏
有志者,事竟成!如果你在学习文章,那么本文《为什么干净的代码很重要》,就很适合你!文章讲解的知识点主要包括,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~
在各种咨询项目中,我最近注意到同样的事情不断重复:集群代码。我这么说是什么意思?好吧,让我这样说。当你编码时,你应该考虑干净的代码。是的,我知道,又有一个人在谈论干净的代码。你为什么要听我的?从 12 岁起,我就对计算机及其工作原理感兴趣。当我 15 岁时,我开始观看 Pluralsight,这是一堆关于如何进行 MVVM、MVC、架构等的视频。我看了很多视频,但我还不知道如何编程。我跟着做了,但我记得很多事情都不明白。
在过去的几年里,我一直在多家公司担任架构师和高级软件开发人员。我的背景是计算机工程和 IT 学徒。正如你们所知,我试图与你们分享我所知道的东西,以帮助人们,同时也像 LinkedIn 上的所有人一样获得曝光。是的,他们并不像你想象的那么热爱写作;这纯粹是一种商业模式。但这并不重要,对吧?所以就这样了。希望有一天您会购买我的一款产品。 ;)
现在,让我告诉你我最近在不同项目中看到的情况。我认为干净的代码并不总是被应用的原因并不一定是因为人们不具备相关知识。这通常与严格的期限和来自不同项目的压力有关。如果您是像我一样的软件工程师或项目经理,您就会知道项目的成功需要一定的限制和时间压力。
为了交付给客户,即使在内部工作,您也会面临截止日期和不同的利益相关者。公司通常采用订阅模式运营,客户定期期待新功能。这带来了很多挑战。开发人员和项目规划人员需要保持项目向前发展,而不要陷入架构债务的陷阱,因为他们没有足够的时间来正确思考解决方案。
一旦出现这个问题,就很难回去解决它。根据我的经验,人们不会经常回去重构他们的项目——至少我认识的人不会。如果您有不同,请告诉我。你可以做很多事情来重构,这很有帮助,但问题是它没有优先考虑。如果代码可以工作并且客户满意,那么重构就不是首要任务。但让我们想想未来两三年。一旦代码变得越来越集群会发生什么?
你最终可能会雇佣很多开发人员将单体架构改造成微服务架构,这会花费很多钱。这就是为什么你应该考虑干净的代码——不仅仅是当你开始一个项目时,不仅仅是当你醒来时,而是一直如此。因为如果你不应用它,最终它会回来咬你。
清洁代码的实用策略
一致的代码审查
定期代码审查可确保遵守编码标准并及早发现潜在问题。
自动化测试
实施自动化测试,包括单元测试、集成测试和端到端测试,有助于在问题投入生产之前发现问题。
定期重构
在项目计划中留出专门用于重构的时间,以防止技术债务累积并保持代码库的可维护性。
采用坚实的原则
SOLID 原则(单一职责、开闭、里氏替换、接口隔离和依赖反转)提供了一个用于编写干净且可维护的代码的框架。
清晰的文档
编写清晰简洁的文档可以帮助新开发人员更快地理解代码库并减少引入错误的可能性。
结对编程
结对编程允许两个开发人员一起处理相同的代码,尽早发现错误并在团队成员之间共享知识。
干净代码的长期好处
降低维护成本
干净的代码更容易维护,减少修复错误和实现新功能所花费的时间和金钱。
增强可读性和可理解性
干净的代码库更容易阅读和理解,这对于新开发人员的入职和项目的长期可持续性至关重要。
提高性能
结构良好的代码可以避免不必要的复杂性并优化资源使用,从而带来更好的性能。
更大的可扩展性
干净的代码可以更轻松地扩展应用程序,简化添加新功能和适应不断变化的需求的过程。
提高开发者满意度
使用干净的代码可以减少开发人员的挫败感并提高工作满意度,从而提高生产力并降低流动率。
乱码示例
应用程序= $应用程序; } 公共函数addSkill(应用程序$app,请求$request) { $userInput['id'] = $request->request->get('id', null); $userInput['id'] = preg_replace("/[^0-9,.]/", "", $userInput['id']); $app['checkpoint']->minimumRole(1); $user = $app['session']->get('user', []); $userId = $user['个人资料']['easyJobAddressId']; if ($userInput['id'] === null) { 返回 $app->json(['ok' => true]); } $app['dbs']['appMySql']->insert('技能', [ 'skillId' => $userInput['id'], '用户ID' => $用户ID, '排名' => 0 ]); 返回 $app->json(['ok' => true]); } }
重构代码
重构后的代码通过分解职责、使用依赖注入并遵循 SOLID 原则,遵循干净代码原则。
依赖注入和构造函数
公共函数 __construct( UserRoleService $userRoleService, RequestStack $requestStack, 用户存储库 $用户存储库, EasyJobServiceInterface $easyJobService, 技能存储库 $skillsRepository, 应用程序数据服务$appDataService ){ $this->userRoleService = $userRoleService; $this->requestStack = $requestStack; $this->userRepository = $userRepository; $this->easyJobService = $easyJobService; $this->skillsRepository = $skillsRepository; $this->appDataService = $appDataService; }
通过注入依赖关系,我们确保每个类都有单一的职责,并且可以轻松测试和维护。
添加技能的单一职责
#[路线('/profile/experience/add', name: 'profile_experience_add', 方法: ['POST'])] 公共函数addExperience(请求$请求):JsonResponse { $this->denyAccessUnlessGranted('ROLE_USER'); $skillId = $request->request->get('id'); if (!is_numeric($skillId)) { return $this->json(['status' => 'error', 'message' => '技能 ID 无效']); } $userId = $this->getUser()->getId(); $result = $this->appDataService->addSkillToUser($userId, (int) $skillId); 返回 $this->json(['status' => 'ok', 'added' => $result]); }
这里,我们使用专门的方法来处理技能的添加。它确保验证并遵循干净、简洁的结构。
关注点分离
公共函数index():响应{ $user = $this->getUser(); $userId = $user->getId(); $allSkills = [90, 10, 11, 12, 13, 20, 21, 22, 23, 30, 31]; $skills = array_fill_keys($allSkills, 0); $userSkills = $this->appDataService->getSkillsByUserId($userId); foreach ($userSkills 作为 $skill) { $skillId = $skill->getSkillId(); if (array_key_exists($skillId, $skills)) { $技能[$skillId] = 1; } } }
注意我们如何使用appDataService来解耦系统。
通过分离关注点,我们使每个方法专注于单个任务,使代码更易于阅读和维护。
结论
总之,始终考虑干净的代码。现在看起来可能并不紧急,但忽视它可能会导致严重的问题。优先考虑干净的代码将在未来节省时间、金钱和麻烦。定期重构并遵守编码标准是维护健康代码库的关键。请记住,您今天为编写干净代码所付出的努力从长远来看将会得到回报,使您的项目更具可扩展性、可维护性并且工作起来更加愉快。
到这里,我们也就讲完了《为什么干净的代码很重要》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
426 收藏
-
263 收藏
-
305 收藏
-
159 收藏
-
134 收藏
-
289 收藏
-
476 收藏
-
449 收藏
-
185 收藏
-
389 收藏
-
158 收藏
-
342 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 508次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习