2017-05-29 106 views
0

我不明白这个指标/规则的原因:HIS公制“呼叫”

的函数不应该从超过5个不同的功能调用。 同一函数内的所有调用均计为1.规则 仅限于翻译单元范围。

在我看来,这是完全直观的,因为这与代码重用以及将代码拆分为经常使用的功能而不是重复代码的方法相矛盾。

有人可以解释理由吗?

回答

0

首先要说的是,基于度量的质量方法本质上具有一定的主观性和近似性。遵循一种度量标准的方法来传递高质量的代码是没有绝对的。

在软件复杂性中需要考虑两个因素。一个是内部复杂性,由每个函数内的决策复杂度(最好以循环复杂度度量为例)以及容器内的函数(翻译单元或类)之间的依赖关系复杂度来表示。另一个是接口复杂性,测量协作和分层组件或类之间的依赖关系的级别,包括循环级别。在C/C++世界中,这跨越了多个TU。在Structure101条款中,内部复杂形式称为“胖”,外部形式称为“纠结”。

回到你的问题,这个Hersteller计划软件'CALLING'指标是针对内部复杂性(胖)。他们的观点似乎是,如果您对单个函数的引用超过5个点,那么C++类或C实现文件中的实现逻辑可能太多,因此可能有时间分解为单独的模块或组件。这似乎是软件设计和结构的独特视角,而例外列表可能与这种判断可能适用的领域一样长。