是财富还是陷阱?如何处理他人的代码

 澳洲历史     |      2020-01-01 15:00

声明:本文大部分翻译自How do you work with other people’s code作者:Matthew Setter。可能翻译过程与原文略有不同,转载请注明出处。

学习一门新语言可能会是一件很艰巨的任务,最好的办法就是借鉴前辈的经验已达到事半功倍,下面就是为PHP新手们准备的一些经验餐。 如果你是个PHP开发者,无论是新手还是高手,笔者都希望你能在此讨论下自己对PHP的想法或者技巧。 1. 从OOP开始 Naramore是SourceForge员工以及PHPWomen.org的创办人。对于初学者,她建议在学PHP之前先了解清楚OOP(Object-Oriented Programming)即面向对象编程思想。 “如果你来自非高科技行业,很有必要花一些时间去学习软件开发的基础流程。例如面向对象程序设计、测试驱动开发、版本控制、 调试、设计模式等。” “如果你已经尝试过了但无法解决问题,不要害怕开口问人。很多PHP社区的气氛都是非常友好的,并且提供了大量初学者可用得上 的资源,这些都你来说都会大有帮助的。找一个适合自己的稳定的社区,一个本地用户组或一个开源项目社区,或者是一个freenode上的相关 IRC聊天频道。” 2. 随时Google Casey创立了一个软件商店,并且在unconference流程方面做了很多研究。 他的建议是在PHP社区找到自己的位置以及遵循“发问前先Google一下”。 “马上找到一个用户组加入,全世界有很多聪明的人聚集一起聊天、开拓思路、互相帮助的PHP群。” “记住,在提问之前先尝试在google上搜索。没人喜欢懒惰的人。” 3. 加入开源项目 Leonard 在运营一家爱尔兰软件公司echolibre,同时还是CloudSplit的联合创始人。和他的很多同龄人一样,他建 议应该积极尝试加入开源项目,即使你是个新手。 “通过参加开源项目你有机会看到那些源代码,并可以向资深的前辈学习。” “帮助开源项目团队做一些事,例如寻找和记录重复性的bug这样的耗时任务,他们会对你心存感激。当我们想要雇用开发人员时, 如果他曾经参与过OSS项目,我们会更多地考虑他对公司的潜在贡献。” 4. 想了就做 Lornajane 他在网上的身份Mitchell更为出名,是一个PHP顾问、开发者、作家和演说家。 她给出了一句简短的建议:想了就做。 “PHP是一种非常易懂、可以进行快速开发的语言。想知道一件事是否可行的最佳方法就是去做这件事。” “任何人都可以用PHP编程。低门槛意味着会有很多糟糕的PHP作品。但很多糟糕的PHP作品却是非常有用的,即使它看起来并不漂亮 。我个人认为如果你能用PHP解决问题,就大胆去实行,即便做出来的东西可能并不完美。” 5. 避免编码倦怠 Cornutt 运营PHPDeveloper.org和Joind.in,他从1998年开始一直在使用PHP。他给PHP初学者的建议是千万不要产生编码疲劳和倦怠。 “我认为新手PHP开发人员很容易陷入一种不堪重负的境地...初学者往往是对语言有兴趣,但总是被一种“能运行即可” 的心态误导,以至事倍功半。” “试图找到一位导师来引导你进行这些初步的学习步骤。当你真正去同他人沟通时,会发现世界很多不同的东西。IRC是一个很好的 选择,但找一个牛人做老师肯定是最佳选择。" “PHP开发也是一种需要磨练的技能,没人可以在一夜之间变成一名高手。” 6. 选择一个好用的编码器 Turner 从1996年开始一直在做web相关工作和参加开源项目。他运营PHPKitchen.com,最近还杀入Seedcamp决赛。 他给了新手PHP开发人员一个非常好的建议,可以节省时间,写出更好的代码,并帮助维持你对编码的兴趣。 “阅读经验丰富的开发者的代码,你总会发现一些更好、更简洁的方式算法。不要重新发明轮子,使用库可以避免自己编写重复的代 码。" “确保你的代码是人类可读的,如果你的代码6个月后连你自己也看不懂了,你让合作的其他开发者如何去看?" “尽量简化接口,写简单的代码难度更大,不过,良好的重构会为维护节省大量的时间和头痛。" “最后,了解一些杰出的程序员以及他们如何多年保持对编程艺术的热情。” 7. 了解测试驱动开发、封装和代码控制 Herbert 从1999年一直玩PHP至今,他对Gentoo Linux作出很大的贡献。 对于PHP初学者,他说“学习测试驱动开发和封装。一旦你熟悉它,你代码会写的更快,而且继承你代码的人肯定会感谢你”。 “学会代码控制,这是必经之路。” 他还表示,PHP一个最大的优势是有大量的在线免费文档,不用像学其他某些语言一样,跑到街上的书店去买教程。 8. 了解安全问题 Maclean 是来自苏格兰的PHP和Python开发者。 他说:“正因为PHP易用性强,所以有很多人都在使用,但我们必须想想那些初学者在用它做些什么。没必要什么都从头开始写起, 适当地选择使用框架是个很好的开始。” “另外要做的是了解有关安全的问题。PHP曾经在安全性上臭名远扬,就是因为易用性带来的副作用。我们必须学会避开这些问题。

我们在工作中常常也会遇到类似的问题。进入一个项目团队,接手别人的项目,开始干劲满满,但把别人做的东西拿来一看,瞬时傻眼,不知道从何入手,好不容易开始后又满满抱怨之前做项目的风格和自己现在的不同,而如何去化解这类的尴尬,就是这篇文章的主题内容。

处理其他人的代码是一个开发者的基本技能。只需一年的时间,其他人的代码就可以为你所用。

现在,我要寻找一些最有效的处理其他人代码的方法,怎样去有效的阅读遗留下来的代码。要知道这并不是一件容易的事。

为了让叙述过程更容易,我将把我的心得分成以下的方式:

  • 互动
  • 观察
  • 测试
  • 为新人设计的错误修正系统
  • 寻找可行资源
  • 使用好的IDE
  • 看书和blog
  • 编写文档
  • AG贵宾会在线 ,推己及人

互动

谁是你们开发者的老大?他们在哪?在你办公室是否可以直接找到他们?如果ok的话,大胆去和他们交流或者Email他们。要知道他们是项目相关知识最好的来源。

你是否是远程办公或自由职业者?这个项目或公司的开发者用什么来交流,他们是用的IRC、Slack,twitter,email或者其他工具?

要确保你和项目一致。一个经常在Zend Framework 2项目受诟病的地方就是没有什么活动社区。如果日常能多使用IRC channel就不会出现这种情况。所以你要确保你和开发者和其他团队成员保持一致。

观察

当你开始一个项目时,不用太过于紧张。不要指望一开始就知道所有正确的事。一般项目时间估计都会各不相同,但是我有听说在真正可以进行代码生产之前需要3周到3个月不等的时间去了解代码库。

有人会有误导的感觉,认为不论怎样,只要你参与进去你就会可以持续的输出。有这种想法的人可能看了太多的好莱坞电影,比如《旗鱼》。

代码库就是一种思想的结晶,是创造它的开发人员的想法、信念和行事方式的集合。这是需要时间去了解和学习的,对于代码库,你还是一个新人,需要有背景知识的沉淀。

这里有5种很好的方法去开始:

  • 花时间去一步步走一遍所有代码
  • 善于提问
  • 配置测试机制
  • 尝试使用测试机制
  • 读通读懂代码注释和文档

别为难自己,好的开头是成功的一半,做好开头的准备工作。之后,你会开始对那些应用如何组合为什么组合会有更好的了解。

在这个思想下,通过咨询其他的开发者和高级的开发者你可以行动的更快。在这之前通过对代码库的整体了解,你需要列一个问题清单。

花时间向其他的开发者搞清楚你的问题。不要害羞,问问题并得到你需要的答案。