코드 냄새 - 한론의 면도기

PHPz
풀어 주다: 2024-08-18 07:23:32
원래의
1026명이 탐색했습니다.

너무 복잡하지 말고 단순하게 유지하세요

TL;DR: 과도한 방어 코드는 불필요한 복잡성을 초래합니다.

문제

  • 불필요한 복잡성

  • 혼란스러운 논리

  • 숨겨진 버그

  • 더욱 강화된 유지관리

  • 성능 저하

  • 복잡한 코드

솔루션

  1. 검사 단순화

  2. 당신의 논리를 믿으세요

  3. 필수에 집중

  4. K.I.S.S를 팔로우하세요. 원칙

  5. 정기적으로 리팩터링

문맥

코드를 지나치게 생각하고 과도하게 설계하면 불필요한 복잡성이 발생할 수 있습니다.

가능한 모든 시나리오를 방어해야 할 수도 있지만 이 접근 방식은 종종 비대하고 혼란스러운 코드를 생성합니다.

Hanlon's Razor는 단순한 실수나 오해가 발생할 가능성이 높은 경우 악의를 품지 말라고 제안합니다.

지나치게 방어적인 프로그래밍을 피하고 명확하고 간단한 논리에 집중하세요.

앞으로 결코 일어나지 않을 문제를 예상하거나 코드를 너무 유연하게 만들려고 할 수도 있습니다.

간단한 코드는 유지 관리, 디버깅 및 이해가 더 쉽습니다.

샘플 코드

잘못된

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] 중급

AI 세대

AI 생성기는 가능한 모든 극단적인 경우를 설명하려고 할 때 이러한 냄새를 유발할 수 있습니다.

예를 들어 NULL을 완전히 피한다면 NULL을 처리할 필요가 없습니다.

AI 탐지

AI 도구는 논리를 분석하고 적절한 지침을 통해 단순화를 제안함으로써 지나치게 방어적인 코드를 감지하는 데 도움이 될 수 있습니다.

이러한 도구에서는 불필요한 검사를 제거하거나 명확성을 위해 결합하는 것이 좋습니다.

결론

과도한 생각과 코드 설계를 피하세요.

가장 가능성이 높은 시나리오에 초점을 맞추고 명확하고 간단한 논리를 작성하세요.

단순함은 더 나은 코드 품질과 더 쉬운 유지 관리로 이어집니다.

처지

추가 정보

위키피디아

방어적 프로그래밍

부인 성명

코드 냄새는 제 생각입니다.

크레딧

Unsplash의 Nacho Fernández 사진


단순함이 최고의 정교함입니다.

레오나르도 다 빈치


이 글은 CodeSmell 시리즈의 일부입니다.

위 내용은 코드 냄새 - 한론의 면도기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿