”不要乞求额外的时间来重构代码,重构本来就应该作为功能实现的一部分错误理解“遗留代码”的含义Web开发生态系统瞬息万变我记得,之前的一个Web项目使用的是Next.js第10版在那个项目开发期间,Next.js发布了第11版,并带来了新功能和改进突然间,我们的第10版感觉就成了一个遗留项目许多人对“遗留代码”的含义都有一定的误解,以为“遗留代码”就意味着“旧代码”,但事实并非如此《有效处理遗留代码》的作者Michael Feathers曾说过,遗留代码是没有写测试的代码无法测试的代码无法进行重构无法重构的代码就无法维护我们的Next.js“旧”项目实际上拥有相当不错的测试覆盖率,一切运行良好这些是“维护良好的代码”,而不是“遗留代码”请不要一味追逐新颖的工具而浪费时间不要忘记,Github至今仍运行在已有17年历史的Ruby on Rails上函数式编程是最好的函数式编程非常新颖,很多年轻人都在尝试但这并不意味着任何地方都应该使用函数式编程举个例子,如果你有一个Flutter项目,那么在UI层使用函数式编程可不是一个好主意由于不必要的重新渲染,UI层使用过多的“纯函数”代码会引发性能问题,Flutter是面向对象编程,因此你应该按照这种方式使用它这并不意味着你应该完全避免函数式编程在上面这个例子中,业务逻辑层使用函数式编程应该更合适你只需要根据实际情况,选择合适的工具盲目遵循“最佳实践”软件开发的最佳实践有很多,例如整洁的架构、SOLID原则、DRY、KISS、YAGNI、TDD、BDD、CI/CD等等提出这些最佳实践的意图都是好的,但你不应该盲目遵从举个例子,测试驱动开发(TDD)是确保代码按预期工作的好方法但如果你使用的是Clojure或Python之类支持交互式编程环境(REPL)的语言,那么可能不需要一切都采用TDDTDD的唯一目的是尽快获取反馈如果你能在不写测试的情况下获取反馈,那么就不需要TDD(但测试还是应该写)独自挣扎我见过许多热衷于展示“解决问题的能力”的初级开发人员他们经常在其他人已经解决的问题上苦苦挣扎请不要成为这类人不要重新发明轮子伟人往往站在巨人的肩膀上在团队中工作时,你可以向经验更丰富的队友学习他们就是你的“巨人”跳上他们的肩膀,不要浪费时间再跳回地面你的目标是瞄准更高的巨人在没有自我意识的情况下进入“心流”状态你有没有体验过“心流”?这是一种完全沉浸在工作中的心理状态,你会感觉精力充沛,十分专注作为程序员,进入“心流”状态后,感觉像代码会自己写出来,而你只是一个媒介你完全进入了状态不过一定要小心,你可能会写“太多”代码我发现自己在“心流”中往往会过度设计并非只有我会这样,《代码整洁之道》的作者Robert C. Martin也曾在心流中经历过反生产力为了有意打断心流,我推荐使用“番茄工作法”这是一种时间管理方法,每工作25分钟,休息5分钟这种方法有助于你保持专注,避免倦怠忘记活动身体软件工程师的工作并不轻松我们常常在电脑面前一坐就是几个小时,不停地敲键盘,盯着屏幕进入“心流”状态后更加容易忘记自己的健康但请记住,健康最重要没有健康的身体,大脑再聪明也无用武之地你应该注意每工作30分钟(如果采用番茄工作法,则为每25分钟),活动一下身体站起来,伸伸懒腰,四处走走,喝点水这有助于你保持专注,避免倦怠忘记编程的乐趣第一次尝试编程时,我感到异常兴奋每天我都会写代码,解决问题,学习新事物但随着时间的推移,我逐渐忘记了编程的乐趣我太执着于编写“整洁的代码”,遵循“最佳实践”,解决“难题”更多时候,我无法真正编写自己的代码,因为我疲于遵循他人和公司的代码我的创造力去了哪里?你应该时刻牢记编程的乐趣我知道这很难,但你应该尽量找时间做自己的项目,学习新知识在工作时间里,尝试与队友交流一些令人兴奋的新技术,即便手头的项目中用不到这有助于保持动力,并激发灵感变成“码农”,而不是软件工程师“码农”和软件工程师是有区别的“码农”只会埋头写代码,而软件工程师则是利用代码解决问题以下两个理由告诉你千万不要变成“码农”:所谓的“码农”将来会被AI取代(实际上正在被取代中)我知道这个说法富有争议,但很遗憾这是事实人们不关心你的代码,他们关心的是你如何解决他们的问题将代码作为工具,成为“解决问题的人”理解问题,找到最佳解决方案,并利用代码实现这才是软件工程师的本职工作总结以上是我个人认为身为软件工程师永远不应该做的10件事情当然,这些看法均源自我个人的经验,希望能对您有所帮助
(图片来源网络,侵删)
0 评论