Cha*_*had 11 language-agnostic
在开发新软件时,我通常会遇到冗余与依赖性问题.也就是说,要么接受我拥有巨大依赖关系的第三方库,要么自己编写代码,复制所有效果但减少依赖关系.
虽然我最近一直试图想出一种衡量代码冗余和代码依赖性的度量方法.在大多数情况下,我总结说减少冗余会增加代码中的依赖性.减少代码中的依赖关系可以增加冗余.所以它非常反对.
所以我的问题是:你曾经使用过一个好的指标,并且用来衡量代码中的依赖关系或冗余吗?
我认为最重要的一件事是,如果您选择依赖路径,则需要使用工具集,以便快速检查使用指定函数的所有例程和函数.没有这些工具设置,似乎冗余获胜.
PS继续文章
文章
我肯定会建议你阅读Joels的文章:
对于依赖性,我能想到的最佳指标是"如果这种情况消失,世界将会停滞不前".例如,如果C++的STL神奇地消失了,那么大量的程序就会停止工作.如果.Net或Java消失,由于停止工作的产品数量,我们的经济可能会受到打击......
我会用这些方面思考.当然,如果它们消失,很多事情在"世界末日"和"meh"之间是一片灰色.如果依赖性消失,则依赖性越接近可能导致世界末日,它越稳定,拥有活跃的用户群,问题众所周知等等.用户越多越好.
它类似于某些硬件组件的小型消费者.有时硬件已经过时了.为什么?因为没有人使用它.如果你是一家小公司并且需要为你的产品获得一个组件,你将选择通常可用的东西 - "大玩家"大量订购的东西,希望这意味着(a)组件不会消失,(b)该组件的问题众所周知,(c)有一个庞大的,知情的用户群,(d)它可能成本更低,更容易获得.
有时候,你需要那个特殊的磁通电容器部件,如果你每年只订购20个,那么你可能会冒险将公司出售给你的产品放在一起,而且似乎没有人关心:).在这种情况下,可能值得开发自己的助焊剂电容器而不是依靠不可靠的Doc Brown公司.只是不要从利比亚人那里购买钚.
如果你已经开始制造某些产品(特别是当你每年制造的产品远远少于数百万件时),你就必须处理这个问题.我认为,软件依赖性需要以非常相似的术语来理解.
如何将其量化为真实的指标?粗略计算有多少人依赖某些东西.如果它很高,依赖性伤害你的风险要低得多,你可以决定风险是多少.