백엔드 개발 PHP 튜토리얼 젊은 프로그래머가 배워야 할 5가지 교훈

젊은 프로그래머가 배워야 할 5가지 교훈

Jul 25, 2016 am 08:46 AM

과거 7 7명 이상의 소프트웨어 인턴을 수십, 수백 명의 학생을 이끌었습니다. 그리고 졸업 파일이 보였습니다. 나는 그들이 배워야 할 것들이 많이 있다고 생각합니다. 아마도 당신은 내가 특정 기술, 알고리즘, 수학 또는 기타 특정 형태의 지식에 대해 이야기하고 있지 않다고 말할 것입니다. 예, 이것은 배워야 할 것이지만 가장 중요한 것은 아닙니다. 그들이 배워야 할 가장 중요한 것은 "자기 조절"입니다. 이러한 규범은 다음과 같습니다: 가능한 가장 간단한 코드를 작성합니다. 나중에 변경으로 인해 코드가 지저분해지면 쓸모 없는 코드를 삭제하고 주석을 추가합니다.
저는 이 인턴들에게 이 콘텐츠를 배우도록 촉구하는 데 많은 시간을 보냈습니다. 나는 그들에게 좋은 PHP 프로그래머가 되는 방법을 자주 묻는다. 그들은 대개 코드가 명확하고, 이해하기 쉽고, 유지 관리하기 쉬워야 한다고 대답한다. 이것이 내가 듣고 싶은 말이지만 실제로 이것을 일관되게 구현할 수 있는 젊은 프로그래머는 거의 없습니다.
이 점을 염두에 두시기 바랍니다. "자율 규제"를 이해해야 하며, 코드가 "작동"하면 즉시 잊어버릴 수 없습니다. 모든 변수의 이름이 잘못 지정되었음에도 불구하고 코드가 여전히 완벽하게 실행된다면 코드는 참을 수 없을 정도로 엉망이 될 것입니다. 기능적 코드를 간결한 코드로 개선하는 것은 단기적으로 성과를 거두지 못할 수 있습니다. 원래 작동했던 코드는 정리 후에도 계속 작동합니다. 이것이 바로 "자기 규제" 단계가 필요한 이유입니다. 이것이 바로 인턴십이 필요한 이유입니다. 좋은 상사는 코드 품질에 매우 중점을 두기 때문에("좋은 코드"의 정의가 프로그래머마다 다르지만) 인턴과 후배 프로그래머는 코드 품질을 계속해서 수정해야 합니다. 다시. .
아래에 제시한 예 중 일부는 초보 프로그래머가 코드를 작성할 때 일반적으로 사용됩니다.
잘못된 이름의 함수/변수/클래스
이러한 함수, 클래스 및 변수가 실제로 수행하는 작업은 이름에서 알 수 있는 의미와 다릅니다. 일관성이 없습니다. 일방적으로 이름을 보는 것이 맞지만, 현실적으로 보면 전혀 관련성이 없는 이름들도 있다.
예를 들어, 지난번 인턴은 EditorGUI와 EditorObjectCreatorGUI라는 두 가지 클래스를 작성했습니다. 편집 인터페이스를 처리하기 위한 코드입니다. 나를 어리둥절하게 만드는 것은 새 개체를 만드는 데 사용되는 것이 EditorGUI인 반면 EditorObjectCreatorGUI는 다른 개체를 처리해야만 탐색할 수 있다는 것입니다. 둘의 의미는 실제로 완전히 반대입니다! 비교적 간단한 코드임에도 불구하고, 반대의 가정으로 시작했기 때문에 이해하는데 꽤 시간이 걸렸습니다. 이 상황에 대한 해결책은 매우 간단합니다. EditorObjectCreatorGUI의 이름을 EditorObjectNavigationGUI로 바꾸면 훨씬 이해하기 쉽습니다.
저는 이런 일을 많이 봤습니다. 이는 작업 중에 코드가 발전하기 때문에 발생합니다. 이름을 선택할 때는 이름이 정확할 수 있지만 코드 작성을 마칠 때쯤에는 이름에 걸맞지 않을 수도 있습니다. 중요한 것은 항상 명명 규칙을 염두에 두는 것입니다. 추가한 내용이 여전히 함수 및 클래스 이름과 일치하는지 이해해야 합니다.
수업이 헷갈린다
또 문제는 수업이 지저분하다 : 수업은 관련없는 일을 많이 합니다. 새로운 기능을 추가하는 것은 쉽지만 천천히 코드가 부풀어오르고 관련 없는 기능이 곳곳에서 발견될 것입니다. 때로는 부풀림이 클래스 크기를 나타내지 않습니다. 클래스에는 수백 줄만 있을 수 있지만 여전히 클래스에 속하지 않는 코드가 포함되어 있습니다.
왜 이런 일이 발생하는 걸까요? 예를 들어, 어떤 이유로 GUI 클래스가 어떤 텍스처를 사용할 수 있는지 분석해야 한다고 가정합니다(아마 텍스처를 선택하는 버튼이 있을 수도 있습니다). 이 GUI 클래스가 이 분석 결과가 필요한 유일한 클래스라면 GUI 클래스에서 이 작업을 수행하는 것이 합리적입니다. 그러나 어떤 이유로 전혀 관련이 없는 게임플레이 클래스에도 이 정보가 필요합니다. 따라서 이러한 텍스처 쿼리 정보를 GUI 클래스에서 게임플레이 클래스로 전달해야 합니다. 현재 GUI 클래스는 실제로 TextureAnalyser 클래스를 포함하고 있기 때문에 실제로 더 커졌습니다. 해결책도 간단합니다. TextureAnalyser 클래스를 GUI와 게임플레이 클래스 모두에서 사용할 수 있는 별도의 클래스로 분할하는 것입니다.
많은 사람들이 이 경험 법칙에 의문을 제기했습니다. 내가 추가한 기능이 여전히 원래 클래스의 이름과 일치하면 어떻게 되나요? 맞지 않으면 이름을 바꾸거나, 별도의 클래스로 분할하거나, 다른 클래스로 코딩해야 합니까?
클래스에 적합한 이름을 찾지 못하면 불쾌하게 느껴질 것입니다. 이름에 클래스의 목적을 설명할 수 없으면 복잡해 보일 것입니다. 때로는 비대해진 클래스를 여러 부분으로 나누고 각각에 적절한 이름을 지정해야 할 때도 있습니다.
과도한 수업
과 비슷합니다. 이전 요점 - 카오스 클래스에도 비슷한 점이 있습니다. 클래스에 많은 것들이 조금씩 추가되고, 그러면 필연적으로 클래스가 비대해집니다. 이 경우 그러한 클래스는 여전히 의미가 있지만 조금 너무 커질 뿐입니다. 이러한 거대 괴물은 번거로울 뿐만 아니라 버그가 발생하기 쉽습니다. 동일한 전용 멤버 변수를 작동하려면 많은 양의 코드를 사용해야 하기 때문에 일부 세부 사항을 간과하기 쉽습니다.
너무 커진 반을 나누는 건 사실 꽤 지루한 일이다. 클래스의 코드가 밀접하게 얽혀 있으면 이는 문제가 될 수도 있습니다. 이미 작동하고 있고 수정되는 동안 새로운 기능을 추가할 수 없다는 사실과 함께, 너무 크고 자체를 엄격하게 규제할 수 없는 클래스를 분할하는 것은 선택 사항이 아니라고 말해야 합니다.
로니모의 일반적인 경험에 따르면 클래스는 500라인 이하, 함수는 50라인 이하로 유지하는 것이 가장 적절합니다. 그러나 때때로 이것은 실현 가능하지 않거나 현명하지 않습니다. 그러나 일반적으로 클래스나 함수가 해당 경계를 초과하면 이를 리팩토링하고 더 작고 관리하기 쉬운 조각으로 분할하는 방법을 찾을 수 있습니다.
코드 주석에 대해
거의 모든 샘플 코드가 이유를 설명하지 않고 주석 처리된 코드 조각을 포함합니다. 이 코드를 수정해야 합니까? 이전 코드가 교체되었나요? 이 코드는 왜 거기에 쓰여졌나요? 주석이 없는 코드는 아무 의미가 없는 경우가 많다는 것은 누구나 알고 있지만, 어떤 이유에서인지 많은 사람들은 자신의 코드에 주석을 달는 것을 잊어버립니다.
병렬 논리 및 코드 중복
하나 더 문제는 여러 코드 조각에서 비슷한 논리를 자주 본다는 것입니다.
예를 들어 "TreeBackground.dds"와 같은 텍스처 이름을 통해 대략적인 대상 개체를 알 수 있습니다. 텍스처가 트리에서 사용될 수 있는지 알아보기 위해 파일 이름이 "tree"로 시작하는지 확인합니다. SDK를 사용할 수 있는 경우 filename.beginsWith("tree")를 사용하여 신속하게 감지할 수 있습니다. 단지 이 코드가 너무 짧기 때문에 필요한 위치를 선택하고 직접 복사하여 붙여넣는 경우가 많습니다. 물론 이것은 코드 중복이고 모두가 알고 있듯이 코드 중복을 피해야 하지만, 복사된 코드가 너무 짧다면 이를 잊어버리고 자연스럽게 직접 복사하는 경향이 있습니다. 여기서 직면한 문제도 분명합니다. 텍스처가 트리에 적합한지 확인하는 방법은 나중에 변경해야 할 수도 있으며 그런 다음 "샷건 수정"(즉, 모든 곳에서 수정) 전략을 구현해야 할 수도 있습니다. 한 번에 한 곳씩.
여기서 일반적인 규칙은 매우 구체적인 코드인 경우 원본 코드가 매우 짧더라도 함수를 호출하지 않는 것입니다. 더 많은 코드가 필요한 코드를 직접 작성하는 것보다 훨씬 더 빠르며 함수로 캡슐화해야 합니다.
위에서 논의한 내용은 매우 자세하게 설명되었습니다. 대학에서도 많은 것을 배웠습니다. 하지만 지금의 과제는 수동적 순응에서 능동적 기억으로 단계적으로 습관을 발전시켜야 한다는 것입니다. 그렇기 때문에 로니모 인턴에게 가장 중요한 것은 지식을 배우는 것이 아니라 자기조절을 배우는 것입니다.
Brothers IT Education 원본 PHP 튜토리얼 CD/"Essential PHP in Details"를 무료로 받아보세요. 자세한 내용은 공식 웹사이트 고객 서비스(http://www.lampbrother.net)에 문의하세요.
PHP, Linux, HTML5, UI, Android 및 기타 비디오 튜토리얼(코스웨어 노트 비디오)을 배워보세요! 이벤트에 참여하고 Brothers의 원본 비디오 튜토리얼 CD 컬렉션을 받으려면 Q2430675018
에 문의하세요. http://www.lampbrother.net/newcd.html



본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP의 컬 : REST API에서 PHP Curl Extension 사용 방법 PHP의 컬 : REST API에서 PHP Curl Extension 사용 방법 Mar 14, 2025 am 11:42 AM

PHP 클라이언트 URL (CURL) 확장자는 개발자를위한 강력한 도구이며 원격 서버 및 REST API와의 원활한 상호 작용을 가능하게합니다. PHP CURL은 존경받는 다중 프로모토콜 파일 전송 라이브러리 인 Libcurl을 활용하여 효율적인 execu를 용이하게합니다.

Codecanyon에서 12 개의 최고의 PHP 채팅 스크립트 Codecanyon에서 12 개의 최고의 PHP 채팅 스크립트 Mar 13, 2025 pm 12:08 PM

고객의 가장 긴급한 문제에 실시간 인스턴트 솔루션을 제공하고 싶습니까? 라이브 채팅을 통해 고객과 실시간 대화를 나누고 문제를 즉시 해결할 수 있습니다. 그것은 당신이 당신의 관습에 더 빠른 서비스를 제공 할 수 있도록합니다.

PHP에서 늦은 정적 결합의 개념을 설명하십시오. PHP에서 늦은 정적 결합의 개념을 설명하십시오. Mar 21, 2025 pm 01:33 PM

기사는 PHP 5.3에 도입 된 PHP의 LSB (Late STATIC BING)에 대해 논의하여 정적 방법의 런타임 해상도가보다 유연한 상속을 요구할 수있게한다. LSB의 실제 응용 프로그램 및 잠재적 성능

JWT (JSON Web Tokens) 및 PHP API의 사용 사례를 설명하십시오. JWT (JSON Web Tokens) 및 PHP API의 사용 사례를 설명하십시오. Apr 05, 2025 am 12:04 AM

JWT는 주로 신분증 인증 및 정보 교환을 위해 당사자간에 정보를 안전하게 전송하는 데 사용되는 JSON을 기반으로 한 개방형 표준입니다. 1. JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다. 2. JWT의 작업 원칙에는 세 가지 단계가 포함됩니다. JWT 생성, JWT 확인 및 Parsing Payload. 3. PHP에서 인증에 JWT를 사용하면 JWT를 생성하고 확인할 수 있으며 사용자 역할 및 권한 정보가 고급 사용에 포함될 수 있습니다. 4. 일반적인 오류에는 서명 검증 실패, 토큰 만료 및 대형 페이로드가 포함됩니다. 디버깅 기술에는 디버깅 도구 및 로깅 사용이 포함됩니다. 5. 성능 최적화 및 모범 사례에는 적절한 시그니처 알고리즘 사용, 타당성 기간 설정 합리적,

프레임 워크 보안 기능 : 취약점 보호. 프레임 워크 보안 기능 : 취약점 보호. Mar 28, 2025 pm 05:11 PM

기사는 입력 유효성 검사, 인증 및 정기 업데이트를 포함한 취약점을 방지하기 위해 프레임 워크의 필수 보안 기능을 논의합니다.

프레임 워크 사용자 정의/확장 : 사용자 정의 기능을 추가하는 방법. 프레임 워크 사용자 정의/확장 : 사용자 정의 기능을 추가하는 방법. Mar 28, 2025 pm 05:12 PM

이 기사에서는 프레임 워크에 사용자 정의 기능 추가, 아키텍처 이해, 확장 지점 식별 및 통합 및 디버깅을위한 모범 사례에 중점을 둡니다.

PHP의 CURL 라이브러리를 사용하여 JSON 데이터가 포함 된 게시물 요청을 보내는 방법은 무엇입니까? PHP의 CURL 라이브러리를 사용하여 JSON 데이터가 포함 된 게시물 요청을 보내는 방법은 무엇입니까? Apr 01, 2025 pm 03:12 PM

PHP 개발에서 PHP의 CURL 라이브러리를 사용하여 JSON 데이터를 보내면 종종 외부 API와 상호 작용해야합니다. 일반적인 방법 중 하나는 컬 라이브러리를 사용하여 게시물을 보내는 것입니다 ...

See all articles