首页 >知识讲堂 >网站建设知识>经验分享:Quora在对Python的使用以及其在实际开发过程中团队协作的代码管理

经验分享:Quora在对Python的使用以及其在实际开发过程中团队协作的代码管理

2021-01-04 14:34:10 阅读(178 评论(0)

首先,让我们来看看Quora网站开发中使用的主要技术:Web层和CMSHAProxy作为前端负载平衡服务器,反向代理服务器是Nginx,Nginx后面是Pylons(Pylons Paste),承担动态Web请求。Webnode2和Livenode两个内部系统承担着创建和管理内容的重要任务,Webnode2生成HTML、CSS与JavaScript,并与LiveNode轻度耦合。使用LiveNode来显示Web页面的内容。使用Python、C 用JavaScript写的。特别提到使用jquery和Cython。LiveNode有可能开源。为什么使用Python?一些与Python相关的技术组件已经提到。有趣的是,来自Facebook的团队实际上使用Python作为主要的开发语言。Quora解释说,Facebook选择PHP不是最好的选择,而是有历史原因的。Quora技术团队在考察了多种语言后选择的Python,当然有很多原因,总的来说,并不是很激进。通信处理后端通信采用Facebook开源的Thrift,除了开发接口简单外,可能更熟悉也是一个因素:)Comet服务器采用Tornado处理Longpolling和Push更新(不知道知乎用什么?),Tornado是前FriendFeed技术团队开源的产品。由于Sphinx不能满足实时性的要求,Quora使用了自己开发的搜索引擎,只使用Thrift和Pythonunicode库,而不使用其他搜索引擎。Quora的搜索很特别,因为它需要提供更好的前缀索引,因为它需要关联输入内容并提供有效的提示(Prefixindexing)功能。Quora搜索的实现还是挺有技术含量的,后端查询请求的压力也不小(也许目前的并发请求量还没那么大)。做相关开发的朋友不妨仔细研究一下这个场景。如果一般框架相似,那么决定最终生成的因素很可能是细节。MySQL被用作数据持久层的存储方案,Memcached被用作Cache层。目前流行的NoSQL相关产品尚未使用。Quora这样做有自己的理由,用户量级没有达到百万的SNS网站完全没有必要使用NoSQL的东西。也许Quora将来也会启用。查理·奇弗,创始人(CharlieCheever)和亚当·德安杰洛在一起(AdamD'Angelo)之前都是Facebook,所以Quora的技术确实有很多Facebook基因。Quora的团队规模不大,估计只有十几个人在做技术。这么紧凑的团队用了这么多技术和产品,说明很多人都是多才多艺的。这是国内技术团队需要向外国同行学习的地方。Quora的技术管理经验:Quora的代码质量有四个原则。1.阅读和理解代码应该很简单——开发人员阅读代码的时间远远大于编写代码的时间。所以Quora应该尽量让代码简洁易懂,尽管写这样的代码可能需要比以前更长的时间。2.不同部分的代码应该有不同的质量要求——不同部分的代码对长期开发有不同的影响,因为它们有不同的生命周期、影响范围、被破坏的可能性、被破坏的后果大小和debug的难度。一般来说,不同的代码对产品迭代速度有不同的影响,所以平等对待所有代码显然不是最好的选择。3.维护代码质量的成本可以降低-开发自动化、更容易使用的开发工具、更好的流程和更好的开发人员可以降低维护代码质量的成本。4.整个代码库应该是一致的——整个代码库的一致性是非常重要的,尽管这意味着一些局部代码可能不会以最好的方式编写。缺乏一致性的代码库将使阅读、理解(参与第一点)、添加后续功能和使用自动化工具来改进代码更加困难。接下来,我将介绍Quora在开发过程中遵循四个原则的一些具体方法。代码提交后的相互审查(CodeReview)如果代码库中有代码变化,Quora将从六个方面进行同行审查-正确性(correctness)、代码封装(privacy)、性能(performance)、架构(architecture)、可重用性(reusability)、代码风格(style)。阅读代码是代码审查中不可缺少的一部分,因此实施代码审查系统无疑有利于提高代码的可读性。但不幸的是,代码审查也会减缓开发过程。例如,在提交代码之前,代码必须由同伴审查,并由作者在提交到代码库之前完成改进。每轮审查可能持续两天,然后通常有两到三轮审查,这意味着代码作者经常在代码审查工作中浪费半周以上。在Quora,Quora在提交代码之前没有进行审查。也就是说,在一些同事审阅之前,代码会先上线。为了让你对Quora的工作规模有一个概念,昨天Quora有48个开发者提交了187个代码(commit)。Quora认为,代码后审查是一项很好的措施,因为它允许开发者从不必要的代码审查笼中解放,并且可以先完成其他工作。这样,审查员也可以在方便的时候选择他们阅读这些代码,以免被别人催促完成这项工作。Quora的流程希望Quora能在一周内完成代码审查,但大多数Quora都会在那里 1 至 2 审查在天内进行。经过仔细讨论,确定了“一周”的长度——它足以让审查员自由安排审查时间,也足以及时防止其他人阅读和使用低质量代码的后果。在实践中,Quora还考虑到很多开发者会有一个以“周”为周期安排的工作时间表。Quora之所以能够在提交代码后审查这一措施,也是因为Quora信任Quora的每一位开发人员。毕竟,Quora只雇佣最好的开发人员,并给他们最好的工具和最仔细的培训。这也促使Quora写一些好的测试来实现高代码覆盖率,这使得Quora能够在任何代码审查之前检查代码的正确性。此外,Quora使用Phabricator,这是一个很好的代码审查工具,配置了相当高的自由度。Quora修改了Phabricator工具,使其能够更好地为Quora提交后审核流程服务。例如,Quora写了一个命令行工具来帮助您*代码并要求审查。该工具允许开发人员在不修改之前提交的情况下正确运行Phabricatordiff。说了这么多,Quora对不同类型的变化有不同的审查要求。如果新代码可能造成严重后果,难以修复,Quora将要求提交前审查,而不是定期提交后审查。例如:1。涉及与用户隐私和匿名相关的代码;2。涉及与核心抽象类相关的代码,因为许多其他代码可能是基于它的;3。涉及可能导致停机的底层代码;提交前或提交后审查,这也与开发者的谨慎有关。如果任何开发人员在提交代码之前都想要求代码审查,以获得一些建议或意见,他们就完全有这样做的自由——尽管这很少发生。为了使代码审查顺利进行,将代码审查发送给正确的人,新代码应由对这一变化有充分了解的人进行审查。如果代码是由会维护这些代码的人负责的,那就更好了。显然,他们会有充分的理由和动机来最大限度地提高代码的长期可用性。Quora写了一个简单的系统,让开发者可以简单地表示名称模块/目录级别的代码所有权。他们只需要在文件的开头添加一个元标签。例如:__reviewer__=‘vanessa,kornel如有提交(commit)如果文件会改变,系统会读取标签,标签中标注的开发者会自动添加到comit的审查员名单中。此外,Quora还有其他关于代码审查员的规则。例如,对于所有设置A/B测试的commit,将有一个数据分析师——如果没有,它将自动添加到审查列表中。事实上,Quora的工具也可以简单地添加其他关于代码审查员的规则。比如Quora想,可以把新员工的所有commit都发给导师。有一个智能的审查和分发系统,将代码审查发送给正确的人,减少了开发人员寻找代码审查员的麻烦,并确保找到最合适的人来审查每个代码。测试是开发过程中非常重要的一部分。Quora写了许多单元测试、功能测试和UI测试,以实现高代码覆盖率。在不担心破坏现有功能的情况下,有一个完整的单元测试可以让开发者快速平行地完成新代码。Quora花了很多时间制作Quora测试框架(基于nosetests),目标简单、快捷、易用,使写作测试的工作量尽可能低。Quora还开发了许多自动化测试工具。正如前一篇关于Quora持续部署系统的文章所说,Quora的所有代码都在中央服务器上完成了测试,然后才能上线。该测试服务器具有很高的并行性,所以即使Quora完成了所有的测试,也只需要不到5分钟。这样一个快速的系统是鼓励开发者尽可能多地写测试和测试。Quora有一个叫做“本地测试”(test-local)与执行和新代码相关的测试自动找到工具。为了更好地使用这个工具,Quora的测试必须模块化(这也有助于开发者在测试失败时快速找到bug并修复)。Quora有一份共享文件,描述测试代码的书写规范,以确保这一目的和其他一些关于测试代码的重要性。在审查代码时,严格执行这些原则。类似于代码审查,Quora对不同类型的变化有不同的测试标准。如果新的变化可能会带来严重的后果和修复成本,Quora将需要更高的代码覆盖率。所有这些都加在一起,最大限度地发挥Quora写作测试的意义,从而降低长期开发成本。Quora非常热衷于共享代码质量指导,这有助于Quora:1.更好地培训新开发者;2.更好地分享Quora在整个团队中的经验和智慧;3.建立共同的标准,以提高代码库的一致性;4.减少开发和审查的工作量。例如,在每次审查中讨论每行代码是80个还是100个字符是没有意义的。Quora可以讨论这个问题一次,然后在未来的所有代码中使用这个标准。除了每种语言本身的语句规范外,Quora还有一些更抽象的代码规范,如如何编写好的测试或如何构建代码模块,以帮助减少代码的阅读时间。这些规范并非一成不变。在Quora逐渐对各种权衡有了更深入的了解的过程中,Quora也会改变这些规范来实现利益最大化。Quora也有大型代码重构工具(有的是codemod等开源工具,有的是Quora自己开发的),以便在Quora改变规范后重构所有旧代码。一个快速前进的团队会尝试很多新事物来纠正旧代码。自然,有些很好,有些不令人满意。因此,一家快速前进的公司的代码库中肯定会有很多沉淀的渣滓,即那些实际上不再使用的代码,而是留在那里,使许多事情变得更加复杂。了解这些糟粕,保持代码库的简洁,也会提高开发速度。定期组织Quora“整顿周”(Cleanupweeks)清除这些糟粕。在这些整改周中,一些指定的团队——有时是整个公司——把所有的时间都花在了解旧代码上。这些定期活动减少了人们在“日常工作”和“整改工作”之间切换所需的时间和精力,也使旧代码的整改更加有趣,带来了更多的社会价值。有些代码比其他代码更容易纠正。当然,也有一些代码会对开发速度产生很大的影响。为了最好地利用每个人整改旧代码的时间,Quora将根据清除旧代码所需的时间和清除后对开发速度的影响,对每个代码模块的整改优先级进行排序。检错和优化代码(Linting)人们很容易低估偶尔不遵循代码语言规范(如代码注释或每行代码长度)的后果,但这些后果会叠加在一起。的确,时刻记住和遵循很多规范是很烦人的,尤其是规范越来越多的时候。因此,Quora并不感到惊讶,许多开发人员并不准备遵循这些规范。Quora开发了一种叫做qlint的工具,用于检查和优化公司内部代码,以减少实现这一目标的工作量。Qlint是基于flake8和pylint开发的智能小工具,可以识别文本结构和抽象语法树(AST)。这个工具使得Quora很容易在未来添加新的代码规则。例如,Quora规定,Python中所有private的变量都必须在变量名前加上划线,

以上就是关于经验分享:Quora在对Python的使用以及其在实际开发过程中团队协作的代码管理的相关介绍,更多经验分享:Quora在对Python的使用以及其在实际开发过程中团队协作的代码管理相关内容可以咨询我们或者浏览页面上的推荐内容。我们将让你对经验分享:Quora在对Python的使用以及其在实际开发过程中团队协作的代码管理有更深的了解和认识。

内容来源:网络,以上内容来源于网络,不代表本站观点,如有侵权,请联系删除。

推荐阅读

哪款检测电脑*件的软件更加专业,具有权威性?

随着电脑DIY*件市场的迅速发展,用户更多的开始摒弃传统整机电脑的购买方式,个性化的DIY攒机成主流选择。但是DIY的多种类的*件搭配方案优劣难定。多样化的*件搭配方案使得我们对于整机综合性能的测评也变得更加复杂。因此检测电脑*件…查看详情

如何注册个体工商户 个体工商户注册方法

  如今,越来越多的人自己创业。许多人选择转向个体行业。做这项工作时,你需要事先到工商局登记。那么如何注册个体工商户?下面万商云集*就给大家来详细介绍一下如何注册个体工商户 个体工商户注册方法这方面的内容,希望能…查看详情

发明专利公开到实审要多长时间?

发明专利申请人申请专利后,要在申请之日起3年内申请实质性审查,逾期未申请的,视为撤回申请,下面万商云集*就给大家整理了具体的时间要求。  一、发明专利公开到实审要多长时间  发明专利申请人申请专利后,要在申请之日起3…查看详情

基本的电商网站运营策略你都了解吗?

市场的不断发展的需求促使着电商快速发展,电商网站的数量也在短时间内有了很大的增长。但是不是所有的网站都获得了成功,不同的运营策略会给网站带来不同的效果。抓住运营的重点能够得到事半功倍的成效,跟随小万一起来了解一下…查看详情

高pr域名有什么含义

  高PR(PageRank)域名是指在谷歌(Google)搜索引擎中评级为高的网站域名。在谷歌的搜索结果页面中,页面排名越高的网站往往拥有更多的流量和曝光率。这是因为用户在使用搜索引擎时,往往只点开前几页搜索结果中的网站,而高PR域名…查看详情

免费制作幻灯片的软件 手机怎么制作幻灯片

每个月在进行工作汇报的时候,是需要借助幻灯片的形式,把自己的工作呈现出来的,所以作为一个职场的基本人员来说,必须要知道怎么制作幻灯片,这是最基础的,那么我们可以先了解一下制作幻灯片的软件有什么?1、AshampooSlideshowStud...查看详情

Zend框架是什么

最好用的框架是哪个?CI?中大型级别的建议使用zf,Zend绝对是PHP中的处于领先的框架之一,它有着很强的灵活性,非常适合现代Web应用的开发,受到很多开发者的喜爱。它的设计简洁、符合人们的学习曲线,被广泛使用,所以安全性也较好。zend...查看详情

免费高清直播系统推荐,主播带货的不二之选

随着互联网时代的加入,高清直播也加入了现在的社会生活中,在我们手机APP当中的真人直播还是虚拟直播或者说游戏直播,会要求一定的清晰度,如果清晰度过于低下的话,那随之而来的效果肯定会不好,那么今天我们就来盘点一下高清直…查看详情

英语配音app有哪些,强烈推荐4款

其实在互联网上面有许多兼职工作是可以让大家做的,包括英语配音也属于一种不错的兼职,但是,做这种兼职的前提是你必须要会英语,那么,可以借助英语配音app去提前练习一下。1、少儿趣配音此款专门为儿童构建,这里富含大量的日本…查看详情

linux中x64和x86的区别有哪些?

  x64和x86是两种不同的CPU架构类型,它们在*件架构、寻址空间、指令集等方面有所不同。下面将详细描述它们的区别。  1.*件架构  x86是Intel于1985年推出的32位指令集架构,后来被AMD、VIA等厂商广泛采用。而x64则...查看详情

音频剪辑软件哪些好?推荐几款好用的音频剪辑软件

很多人在制作音频的时候都会找到一些比较好的软件,因为找到了软件之后,才会将多个音频进行剪辑,也能够结合在一起带来更加流畅的音频效果。想要打造出更理想的效果,找到一款比较好的音频剪辑软件也是非常重要的。那么音频剪辑…查看详情

曝光高?见效快?网络营销有哪些推广平台可选?

无论是网络营销还是推广,很多成功的案例往往离不开一套成熟的营销推广思维,要做到曝光高,见效快,常见的网络营销有哪些推广平台可选?本文整理了部分比较靠谱的推广平台,有需要的朋友记得收藏。 主要的网络营销推广平台具…查看详情

专访|拍账王财税服务品牌创始人罗明松:一个卓越的领导者

罗明松,账王(广州)云科技有限公司董事长,同时担任大信会计师事务所广东分所合伙人、中国生产力促进中心智慧财税研究院长、广州市财务代理行业协会常务副会长,广州市番禺区创新科技企业协会副会长、广州市新锐企业家协会副会…查看详情

传统便利店进行O2O电子商务平台开发对经营发展的影响

在全行业互联网+的环境下,传统便利店面临者市场经济和消费需求的双面挑战和冲击。本文主要从O2O模式的概念和发展现状,对当下传统便利店进行O2O电子商务平台开发的系统需求,以及后续的物流配送体系建设和经营服务项目等方面的影响…查看详情

电暖气什么牌子的好?这些品质好

电暖器不仅颜值更高,使用起来也更加的简单方便,还可以移动,能够满足大家多种不同的取暖需求,尤其是和出租屋或者是办公室使用,但是面对多个品牌,可能大家不知道哪个更好,那么下面就关于比较好的电暖器品牌,为大家介绍。1、…查看详情

首页

产品

万商学院

客户服务

会员中心

当前站点

h

选择站点

全国站成都

一 客户顾问-张三

已为0个客户提供专业互联网服务咨询
  • 手机号码
  • 验证码图形验证码换一张
  • 短信校验码

    电话咨询

    在线咨询