为何优秀如程序员,也会构建 Bug 满格的软件?( 六 )
在这种情况下,唯一方法是以退为进,改善并简化代码库的结构。重新设计系统架构,防止意外的交互。有些非关键的功能,即便是已然构建完毕,也可以将其删除。另外,我们还可以部署自动化工具来检查bug和编写不良的代码。比尔·盖茨曾说过:“用代码行数来衡量编程的进度,就如同用重量来衡量飞机的制造进度。”人类思维只能处理有限的复杂性,因此软件系统的复杂程度取决于如何有效地利用这些复杂度。
构建良好的软件涉及扩展与降低复杂性的循环交替。随着新功能的开发,系统中自然会积累混乱。当这种混乱开始引发更大的问题时,你就需要暂停进度,花时间清理混乱。这两个步骤都是必要的过程,因为这个世界上没有柏拉图式的工程:软件工程取决于你的需求和实际遇到的问题。即使是非常简单的用户界面(比如Google的搜索栏),表面下也有可能包含大量的复杂性,你无法在一次迭代中完善这些复杂性。难点在于如何管理这个循环,在开发新功能的时候允许适度的复杂度,同时又不能让复杂度过度积累以至于变得势不可挡。
软件的核心是积累知识而不是编写代码
在软件开发中,大多数想法都很糟糕,但这不是任何人的错。只不过人们的各种想法实在太多了,所以某些想法肯定会行不通,即使非常谨慎和明智地抉择,也再所难免遭遇失败。所以为了顺利地推进项目,你需要从一堆糟糕的想法中摈弃最坏的想法,并发展最有希望的想法。苹果就是一个富有远见的设计典范,但在最终的产品问世之前,它也经历了几十个原型。最终的产品看似简单,但其中蕴含着错综复杂的知识,为什么他们选择了这个特定的解决方案?为什么其他替代方案不可行?
推荐阅读
- 武侠|永劫无间狂销600万,创国产游戏巅峰,为何网易总能做出武侠爆款
- 精灵宝可梦|《宝可梦》人称神兽版本“秃鹰娜”,伽勒尔火焰鸟的表现多优秀?
- 三国杀|三国杀:同为20宝珠,为何没人选钟会?原因令人费解
- Xbox|将拥抱元宇宙世界?Xbox20年庆典看点十足,全球玩家为何兴奋?
- 阴阳师|为何崩坏3在Steam上差评如潮,在腾讯WeGame却有超8成好评?
- 吃鸡游戏|之前是“吃鸡”大主播,现成功转战联盟,为何越来越多主播开始转型?
- 地下城堡3|新武将为何无人问津,原来是技能中存在巨大缺陷——杜袭解析
- edg战队|EDG勇夺S赛桂冠!明明已是第三座冠军,为何却让更多玩家兴奋?
- lpl|BO登顶韩服第一,更改ID引人心疼,为何没有战队敢要他?
- lpl|LPL为何处理不了猫咪,自身了解太浅,根本不重视S11!