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