首页  >  文章  >  web前端  >  代码气味 - Hanlon&#s Razor

代码气味 - Hanlon&#s Razor

PHPz
PHPz原创
2024-08-18 07:23:321024浏览

不要过于复杂:保持简单

TL;DR:过度防御的代码会导致不必要的复杂性。

问题

  • 不必要的复杂性

  • 逻辑混乱

  • 隐藏的错误

  • 更难维护

  • 性能较慢

  • 混乱的代码

解决方案

  1. 简化检查

  2. 相信你的逻辑

  3. 专注于必需品

  4. 跟随 K.I.S.S.原则

  5. 定期重构

语境

过度思考和过度设计你的代码可能会导致不必要的复杂性。

您可能需要防御每种可能的情况,但这种方法通常会产生臃肿、混乱的代码。

汉隆剃刀建议,当更可能发生简单错误或误解时,您不应抱有恶意。

避免过度防御性编程并专注于清晰、直接的逻辑。

您可能会预见到未来可能永远不会发生的问题,或者尝试使您的代码过于灵活。

简单的代码更容易维护、调试和理解。

示例代码

错误的

function processData(data) {
    if (typeof data === 'undefined') {
        throw new Error('Data is undefined');
    }

    if (typeof data !== 'object') {
        throw new Error('Data is not an object');
    }

    if (data === null) {
        throw new Error('Data is null');
    }

    if (Array.isArray(data)) {
        throw new Error('Data should not be an array');
    }

    if (!data.hasOwnProperty('items')) {
        return [];
    }

    if (!Array.isArray(data.items)) {
        throw new Error('Items should be an array');
    }

    if (data.items.length === 0) {
        return []; 
    }

    let processedItems = [];
    for (let item of data.items) {
        if (typeof item === 'undefined') {
            continue; // Skip undefined items
        }

        if (typeof item !== 'object') {
            continue; // Skip non-object items
        }

        if (item === null) {
            continue; // Skip null items
        }

        processedItems.push(processItem(item));
    }

    return processedItems;
}

正确的

function processData(data) {
    if (!Array.isArray(data.items)) {
        throw new Error('Invalid data');
    }

    return data.items
        .filter(item => typeof item === 'object' && item !== null)
        .map(item => processItem(item));
}

检测

[X] 手册

复杂的代码通常有更多的行和长的方法是可能的提示。

标签

  • 浮肿

等级

[x] 中级

人工智能一代

人工智能生成器在尝试考虑每种可能的边缘情况时可能会引入这种气味。

例如,如果完全避免 NULL,则无需处理它们。

人工智能检测

人工智能工具可以通过分析逻辑并在适当的指导下提出简化建议来帮助检测过度防御性的代码。

为了清晰起见,这些工具通常建议删除不必要的检查或将它们组合起来。

结论

避免过度思考和过度设计你的代码。

关注最有可能的场景并写出清晰、简单的逻辑。

简单可以带来更好的代码质量和更容易的维护。

关系

更多信息

维基百科

防御性编程

免责声明

代码味道是我的观点。

制作人员

照片由 Nacho Fernández 在 Unsplash 上拍摄


简单就是终极的复杂。

达芬奇


本文是 CodeSmell 系列的一部分。

以上是代码气味 - Hanlon&#s Razor的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn