您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > Be-Professional---项目规范之道(一)
BeProfessional-项目规范之道(一)目录1.必读的书籍推荐2.开发必备工具3.开发环境配置建议4.做事的原则、方法5.如何编写整洁的代码6.调试技巧7.Codereview建议8.Research技巧必读书籍资料1.《代码整洁之道》2.《深入理解计算机系统》3.《敏捷软件开发:原则、模式与实践》4.《TCP/IP详解卷1》5.TheArtofCommandLine6.《深入理解Linux内核》7.《数据结构与算法-Java语言描述》必备工具1.VPN使用方法:LinuxPPTPOSX2.虚拟主机每个人都应该配置自己的虚拟主机,便于学习和玩具。推荐vultr3.SublimeText安装PackageControl管理Sublime插件,以下为必备插件:GitGitGutterknockdownSublimeLinterDocBlockrEditorConfigEmmetFileDiffsSublimeCodeIntel可以将整个配置目录放到GitHub上,方便在多台机器上同步(也可以用Dropbox同步,参考下面),比如inetfuture/sublime-config·GitHub,配置目录的位置:Linux:~/.config/sublime-text-3/Packages/UserOSX:~/Library/Application\Support/Sublime\Text\3/Packages/User4.Dropbox全客户端支持,包括Linux,需要*翻*墙*。国内类似的服务且支持Linux的,尝试过金山快盘,可惜同步不稳定,经常出错。除了同步各种资料外,还可以用来同步一些配置文件,比如各种dotfiles:~/.bashrc,~/.pep8,~/.gitconfig等等,把它们放到Dropbox的同步目录下,然后建立软链接到本来的位置,这样公司、家里多台机器可以无缝同步,尤其重装系统或者换新机器的时候,各种用习惯了的配置可以快速重新启用。5.印象笔记工作必备效率应用:印象笔记不建议使用Evernote国际版,太卡,而且国内的版本提供的本地化服务更方便。剪藏浏览器插件:印象笔记·剪藏关注微信公众号:“我的印象笔记”,可以快速收藏微信内容。6.必备的Chrome插件直接参考知乎上的精华贴:有哪些鲜为人知却非常有意思、好用的Chrome扩展?-GoogleChrome7.其它项目管理和沟通工具Trello开发环境配置建议1.安装软件原则优先使用语言版本管理器安装语言运行时,比如nvm(Node.js),pyenv(Python),rvm(Ruby),jenv(Java),phpbrew(PHP)注意,此类工具通常安装在你的`$HOME`下,通过修改当前shell的`$PATH`等环境变量生效,就是说安装或者使用它们的时候,你不需要也不应该使用`sudo`。优先使用语言包管理器安装语言依赖,比如npm(Node.js),pip(Python),gem(Ruby),maven/gradle(Java),pecl/composer(PHP)优先使用系统包管理器安装系统依赖,apt-get(Ubuntu),homebrew(OSX)对于一些第三方工具,优先使用其官方源或者可靠的PPA源Ubuntu必备软件包:sudoapt-getinstall-yaptitudegdebivimcurlwgetbuild-essentialopenssh-server做事原则、方法认真负责,关注细节,追求卓越1.每一份需求都要理解之后再动手,需求不合理的提出来讨论,对产品要有责任心,不仅仅是“按部就班”得做事情。2.提交前仔细测试自己实现的功能,检查代码细节,有交付高质量代码的责任心,而不是依赖其他成员帮你Reivew或者QA帮你发现bug。3.代码仅仅可以工作是不够的,还要可读、易扩展、可维护、安全、高效,等等等等,要用高标准要求自己,写代码要“上心”,不要敷衍、随意。4.细节不一定决定成败但却可以充分体现一个人的工作态度,请认真对待各种流程、规范,比如写英文邮件时,从语法、格式到每一个拼写、标点,再比如CommitMessage的格式、CodingStyle等等。主动沟通而不是被动沟通1.对需求、开发规范、代码组织等等各方面存在任何疑问时,主动询问和讨论,不要默不作声、自作主张导致返工和延误。2.自己的代码被别人Review时,如果觉得某段代码可能有问题或者不是最优方案,主动提出来讨论,而不是等待审查者询问。前者可以使Review更高效,更利于培养同事间的相互信任,后者一是效率低,同时也是一种不负责任的表现。3.进度存在风险时主动知会其他人,而不是默默拖到最后一刻连累大家加班4.做变更时及时通知相关人员,否则可能会浪费队友的时间去排查问题。代码级别的问题可以通过在GitLab等代码管理工具上at对方。自我驱动1.自觉深入学习相关技术,而不是用多少学多少,临时抱佛脚。假设你在做iOS开发,即便目前所有项目仍在用Objective-C,你也应该利用业余时间自觉去学习Swift,时刻准备着。2.主动思考产品的走向,自觉进行知识储备、调研。3.自觉重构低质量代码,改善项目流程,等等,保证项目的健康发展。换位思考1.使用邮件、微信等工具交流时一次性提供必要的上下文,避免低效率的沟通,想一下,我这样描述对方是否可以理解并直接回复。2.无论是做CodeReview还是提交功能给QA测试,尽自己最大努力保证质量,做好自己分内的事,减轻队友的负担。3.作为开发,想一下我该怎样为leader分担压力?作为leader,想一下我该怎样促进下属工作能力的稳步成长?从根本上解决问题1.思考问题的原因,不要停留于表面问题的修修补补。比如,QA报了一个Bug,说在一个输入项中填入`scriptalert('haha');/script`,保存后页面上会弹出提示框,你来修复这个问题的时候要考虑从根本上杜绝脚本注入问题,比如使用Angular.js的`$sanitize`service过滤输入再显示。相比较而言,不太恰当的做法是仅仅用正则过滤掉输入中的`script/`标签,虽然可以修复这个Bug,却是治标不治本,如果输入中包含`onmouseover=alert('haha')`这种代码呢?当然这种问题需要你有扎实的基本功,对开发各个方面有较全面的了解,才能一针见血的解决问题。2.每一个问题,想一下有没有办法一劳永逸?或者自动化?3.谁痛苦,谁改变。某件事总是让你很不爽?想办法改变它!用正确的方式解决问题1.很多问题都有不止一种的解决办法,不要满足于你最初想到的那种,也许有更好的呢?主动去思考目前的方案可维护吗?方便吗?效率高吗?普适吗?2.多看一些最佳实践(BestPractice)的资料,多看一些优秀开源项目的源代码,多了解别人怎么做的你才能及时发现自己的不足。比如RESTfulAPI,是有一套业界公认的最佳实践的,其本身就是一套约定俗成的东西,如果你没有看过这些最佳实践,随意的设计URL,随意的使用HTTP动词,那你设计出来的API其实只是HTTPAPI,请不要称其为RESTfulAPI。再比如你对Git不熟,然后不知怎么得把工作目录搞的一团糟,你该怎么办?再clone一个重新开始?NO!除非你打算一辈子这么干。你应该去google解决方案,并充分认识到自己对Git不熟这个事实,然后拿出时间来补充知识。3.不要重复造轮子,尤其是使用第三方库时,也许人家已经提供了现成的解决方案,只是因为你没有仔细看文档,所以不知道。磨刀不误砍柴工1.学习新知识要尽可能的系统、全面,不要只是为了应付当前工作片面了解。2.使用第三方库、框架时应尽量通读其文档,至少要知道它可以做什么,有哪些限制,遇到具体问题后可以迅速到文档中查看细节。3.常用的技术点要舍得花时间搞清楚其运行原理、内部机制,免的每次出问题都像无头苍蝇,只能瞎猜。比如Angular.js的directive编译流程是怎样的?Node.js的异步IO是如何运行的?4.工欲善其事,必先利其器。平时要注意效率工具的积累,包括好的代码编辑器、命令行工具、任务管理工具、各种实用小工具等等。对于你常用的编辑器或IDE应该花一些时间去熟练它的快捷键,寻找一些好用的插件,毕竟工作每天都要用,投入的精力绝对物超所值。作者:大房
本文标题:Be-Professional---项目规范之道(一)
链接地址:https://www.777doc.com/doc-8511550 .html