5分钟带你领略写出优美代码的核心要素(内含 感恩节彩蛋)
【导语】
在感恩节到来之际,我们要向程序员们送出感恩节小福利——向一直以来奋斗于工作岗位的他们说一声“谢谢”,感谢一起不断追求卓越的技术伙伴们,殊不知他们指尖下的一行行代码赋予了视听更加美妙的体验~
为了帮助大家更多了解“关爱“程序员群体,也帮助程序猿进行经验的交流和分享。小编特意邀请了5位优秀的爱奇艺程序猿葛葛,用他们多年从业经验,为大家讲讲程序员写代码的那点儿事儿~
好的代码长啥样?
易读性
“大家可能都觉得可读性太easy了,其实看似最简单的确实最难做到的。”
软件开发方面著名作者和国际知名演说家MartinFowler 说过:“任何一个傻瓜都能写出计算机可以理解的代码。唯有写出人类容易理解的代码,才是优秀的程序员。”
代码的第一阅读对象是人,其次才是机器。可阅读性应该是代码的首要标准之一。因为写代码不是一项单打独斗的工作,不能自说自话,而是需要一个团队的配合,因此能够让别人读懂你的代码,是一件非常重要的事情。其次,写一个“人能看懂”的代码更大的好处在于提高其可维护性,大部分的代码完成之后至少需要跑个几年以上,代码的开发其实只占整个产品生命周期的一小部分,大部分时间则是用于维护。Bug已经很令人忧伤了,如果准备改bug的时候发现代码写的还不是“人话”,那真的是非常的“秃然”了。所以一定要可读才易于维护,但可读性也仅仅是爱奇艺程序员对自己的最低要求。
可扩展性
如果说易读性是个基础性需求,那么可扩展性就是爱奇艺程序员高一段位的“进阶要求”了。互联网时代“先开枪,后瞄准”,在爱奇艺创新和效率是我们的制胜法宝。所有的产品都在不断的更新迭代中,因此对于产品的可扩展性要求就非常高。
可扩展性追求的是在不修改原有代码的情况下,可以去扩展更多功能,其优点就是效率高,减少开发成本。也就是贴合了我们所强调的“既要低头拉车,也要抬头看路。”在完成现有产品需求的基础上,多想几步,为“未来”铺路。
高内聚低耦合
写代码的时候
有什么好的习惯、经验分享?
后台产品研发部的聂同学提出,注释是被许多程序员忽略掉的重要工具。目前大部分人都是为了写注释而写注释,内容更多的也都是简单描述实现层的内容。但实际上,注释应该更多的描写设计意图相关内容,或加入图示标注。这样可以在code review的过程当中更好的回忆起当时代码设计的思路,有助于代码的维护、重构等。
你认为程序员必备的核心素质是什么?
一、
抽象层建立
许多程序员在代码编写的时候更多关注与实现层,关注点在于how而不是why,这就会导致很多系统的扩展性差、架构乱,一改就瘫一大片。所以对于程序员来说,抽象层的建立尤为重要,大家需要更多的关注内在逻辑。
这与我们的OKR制定十分类似,O就是这个系统的抽象层,也就是why,O是保持不变的,而KR就是我们的code,它是实现O的工具,也就是how。
举个简单的栗子:如果我们开发一款手机日历app,用户可上传文字,也可上传图片。那么在后台的处理中,我们将文字对应红色,将图片对应绿色进行区分。这时程序员需要明确的是,我们这么处理的目的是为了区分内容的类型,而并非单纯的颜色。
所以我们需要更多的将自己从机械的coding中抽离出来,明白系统建立的内在逻辑,对于整体系统的建立都起着至关重要的作用。
二、
好奇心
对于程序员来说,好奇心也是一个必不可少的素质之一。
没有好奇心就没有驱动力。互联网行业发展飞速,瞬息万变,现在掌握的技术很快也会变得陈旧,现有的概念很快也会落伍,所以就需要好奇心驱动着踏出舒适区,主动去了解新的技术、新的思路、新的想法,及时掌握行业动态。在这个信息大爆炸的时代,提炼出有用的观点和内容,融入到自己的知识框架,学以致用。
三、
团队精神
现在的软件开发已经不再是20年前个人英雄主义的时代,一个超级程序员就能够搞定一切的情况已经很少存在了。我们已经从单兵作战切换为团战模式,所以当我们以团队的形式进行系统的设计和开发时,团队精神也变得越来越重要。
设立一个清晰的、共同的目标,并在技能上互补,共同朝着目标贡献自己的力量,这就是一个优秀的开发团队应有的状态。
干货来啦!推荐书单/论文
专业书单:
《重构——改善既有代码的设计》MartinFowler
《代码整洁之道》 RobertC. Martin
《Java开发规约中文版 》阿里巴巴集团约码项目组
kubernetes官方文档
敏捷软件开发 原则、模式与实践——solid原则
Design Pattern(在solid原则之上的维度)——软件方面,关键定势、素养。模板,下围棋的棋谱、固定的招式的感觉。落地上述几个原则的固定套路
code complete ——技术类的百科全书
clean code ——关于代码风格的
互动话题:
请告诉我你所在专业领域的实用书单?
end
那些你不知道的程序员的多重身份
代码质量提升之道——代码覆盖率原理与移动端工程实践
扫一扫下方二维码,更多精彩内容陪伴你!