slot deposit pulsa slot mahjong slot gacor slot gacor slot gacor resmi slot gacor 2025 slot gacor terpercaya slot gacor 2025 slot gacor hari ini slot gacor hari ini slot gacor hari ini
StackOverflow:我们并不总是遵守编码最佳实践
17611538698
webmaster@21cto.com

StackOverflow:我们并不总是遵守编码最佳实践

资讯 0 1855 2021-03-11 08:33:26
<p><img alt="" src="https://www.21cto.com/uploads/images/ss-1.jpg" style="width: 1000px; height: 542px;" /></p> <p><strong>序</strong></p> <p>&nbsp;</p> <p>编程的人应该没有人不知道StackOverflow,如果是TA就不叫程序员。</p> <p>&nbsp;</p> <p>有人夸张的说,从知春路到后厂村,有多少是StackOverflow程序员,人们也离不这些技术社区和问答平台了。人们在写代码时,遇到不会的技术或困扰,就会到这些网站上面寻找最佳答案。</p> <p>&nbsp;</p> <p>StackOverflow创立于2008年初,创始人为Joel Spoly,之后Jeff Atwood的独立开发者、博客主也加入了进来,</p> <p>&nbsp;</p> <p>2008年4月,Jeff开发始编写第一版本的代码,后来又招聘了两个程序员:Geoff和Jarrod,这两个人也一直留在StackOverflow。</p> <p>&nbsp;</p> <p>2008年9月,StackOverflow.com 正式上线。</p> <p>&nbsp;</p> <p><img _width="427px" alt="" crossorigin="anonymous" data-fail="0" data-ratio="1.044496487119438" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/X1wOHbVRDnzEPaSJluZx3rfAUvlA0WkQvXBLWLdpvZ8wmXKWibPwVf7VRgIm8Z7ltCOKiaaAuNoDLOUSFibXoTvpQ/640?wx_fmt=png" data-type="png" data-w="427" src="https://www.21cto.com/uploads/images/1615422738656.jpg" style="width: 427px; height: 446px;" /></p> <p>&nbsp;</p> <p>从此,程序员们开始有了StackOverflow的时代。</p> <p>&nbsp;</p> <p>起初创始人并没有考虑赢利,只是觉得互联网对开发互联网的程序员并不咋友好,需要让它变得好一些,后来的发展超过了人们的想象,目前的StackOverflow已经有300名员工,并且实现了全面赢利,而且让数千万人学习到了如何编程以及学习新的技能。</p> <p>StackOverflow的版本也在十余年中不断的优化迭代,其项目代码在不断膨胀。以下是其研发团队对其项目中有关&rdquo;编码最佳实践&ldquo;的观点。</p> <p>&nbsp;</p> <p><strong>&ldquo;我们并未完全遵循编码最佳实践,你也不必&rdquo;</strong></p> <p>&nbsp;</p> <p>软件开发最佳实践的发展已经有一段日子了。在软件工程中,它们被定义成让代码更容易维护,确保开发者不犯太大的错误。</p> <p>&nbsp;</p> <p>但是也不是非要坚持软件开发最佳实践,就像数据库设计中的第三范式和反第三范式一样。</p> <p>&nbsp;</p> <p>StackOverflow的工程师RobertaArcoverde和Ryan Donovan说,在构建和开发代码时,为了性能和速度并不总遵循最佳实践,他们解释了如何遵循既定规则,又能够保证项目的性能。</p> <p>&nbsp;</p> <p>两个人从2009年开始,就致力于解决StackOverflow的性能和可访问的问题,当时StackOverflow只有几台服务器,后来访问量越来越大,只有几个人的研发团队不得不寻求扩大服务器数量,以应对大流量需求,同时还要保证StackOverflow的性能快速与轻巧。</p> <p>&nbsp;</p> <p>&ldquo;我们使用了微软的技术栈(.NET,C#和Microsoft SQL Server),基于它的可靠性,我们的成本随着系统实例的增加而增加。每台服务器都需要有一个新的许可证。因此我们的策略是扩展而是增加&rdquo;。</p> <p>&nbsp;</p> <p>Arcoverde和Donovan在其博客上这样写道。</p> <p>&nbsp;</p> <p>在整个站点的发展历程中,保持Stack Overflow的快速与轻量仍然是团队的主要核心。开发团队必须优先考虑,如何利用内存和缓存技术来快确保快速访问数据的目标。</p> <p>&nbsp;</p> <p>对速度的需求,也是StackOverflow最开始选择编程语言的决策之一。</p> <p>&nbsp;</p> <p>Arvoverde和Donovan这样说道:&ldquo;高级语言可提供安全性,但运行时开销较大,速度会变慢。&rdquo;</p> <p>&nbsp;</p> <p>&quot;我们已经对速度进行了优化,我们在某些地方的代码使用了像C语言的地方,而且也使用和了很多C语言的相关模式,比如直接访问内存等,这样可以让速度更快&quot;。</p> <p>&nbsp;</p> <p>&ldquo;我们使用了很多静态方法和字段,希望能尽可能的减少内存分配。通过最小化分配内存空间,从而减少因垃圾收集而导致应用程序的变慢&rdquo;。</p> <p>&nbsp;</p> <p>对高性能代码的极度偏爱,会产生另一个权衡的考量,这将使测试和维护代码变得困难。这将使两个人避开编码最佳实践的地方,包括业内&ldquo;最没有争议&rdquo;的最佳实践之一:自动化测试。</p> <p>&nbsp;</p> <p>两个人这样的解释道:&ldquo;我们写的代码不多,代码也没有按标准的最佳实践实现解耦。虽然这样让团队的代码更容易维护,但在运行时增加了不少多余步骤,且分配了多余的内存。&rdquo;</p> <p>&nbsp;</p> <p>&quot;这对于特定的交易来讲,看起来不多,但是每秒数千计的增加,将是海量级的数字&quot;。</p> <p>&nbsp;</p> <p>Arvoverde和Donovan表示,StackOverflow也没有为每个新功能编写单元测试。他们这样解释说:&ldquo;阻碍我们进行单元测试与功能,怡怡是集中在静态结构上。静态方法和属性是全局的,而运行时很难替换,因此很难&#39;保存&#39;和&#39;模拟&#39;&rdquo;。</p> <p>&nbsp;</p> <p>&ldquo;举个例子,我们是不能模拟数据库连接的,没法编写无法访问数据库的测试用例。&rdquo;</p> <p>&nbsp;</p> <p>Arvoverde和Donovan也特别指出,他们并非建议完全放弃软件开发最佳实践。两个人也指出了一些想法,其开发团队正在努力让其代码更具备可测试性。</p> <p>&nbsp;</p> <p>该宗旨也更多的围绕着这样的思想:如果根据行业惯例制定指导,则开发者可以帮助从软件中获取所需要的结果,帮助其从繁琐的工作上解放大量时间精力以及工作任务。</p> <p>&nbsp;</p> <p>Arvoverde和Donovan后来还补充:&ldquo;将软件工程行业按照最佳实践的模式和行为是正确的,也是有大量理论支持,它们让软件开发更加容易,尤其是大型开发团队。但是这些最佳实践,并不是必须的。&rdquo;</p> <p>&nbsp;</p> <p>&rdquo;复杂和混乱的问题需要创新的解决方案。有时候,你可能需要打破这些标准和规则之一,才能获得软件所要达到的特定成果&ldquo;。</p> <p>&nbsp;</p> <blockquote data-author-name="" data-content-utf8-length="7" data-source-title="" data-type="2" data-url=""> <section> <section>编译:场长</section> </section> </blockquote> <p>&nbsp;</p>

评论