不要过于复杂:保持简单
TL;DR:过度防御的代码会导致不必要的复杂性。
不必要的复杂性
逻辑混乱
隐藏的错误
更难维护
性能较慢
混乱的代码
简化检查
相信你的逻辑
专注于必需品
跟随 K.I.S.S.原则
定期重构
过度思考和过度设计你的代码可能会导致不必要的复杂性。
您可能需要防御每种可能的情况,但这种方法通常会产生臃肿、混乱的代码。
汉隆剃刀建议,当更可能发生简单错误或误解时,您不应抱有恶意。
避免过度防御性编程并专注于清晰、直接的逻辑。
您可能会预见到未来可能永远不会发生的问题,或者尝试使您的代码过于灵活。
简单的代码更容易维护、调试和理解。
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 系列的一部分。
以上是代码气味 - Hanlons Razor的详细内容。更多信息请关注PHP中文网其他相关文章!