- 2022-03-01
- Posted by: Narae Kim
- Category: 기술자료
- 원문 링크: https://blogs.embarcadero.com/final-build-times-with-delphi-and-electron-benchmark-study
- 작성자(작성일): Qasim Shahzad (2022.2)
잘 구성되어 있고 관리가 용이한 소프트웨어 시스템 설계는 모든 전문 개발자들의 궁극적인 목표이다. 이를 위해 우리는 최고의 윈도우 개발 도구와 코딩 연습이 필요하다. 클린 코딩(Clean coding)은 그 목표에 도달하도록 도와줄 핵심 활동 중 하나이다. 하지만 아쉽게도 많은 새로운 개발자들이 클린 코딩에 대해 잘 알지 못한다. 이번 글에서는 클린 코딩 방법과 최고의 윈도우 개발 도구인 델파이와의 관계에 대해서 간단히 정리해보려고 한다.
클린 코드(Clean code)란?
클린 코드는 잘 구성되어 있고, 이해가 쉽고, 변경이 쉬운 것이다. 모든 사용 가능한 소프트웨어들은 변경이 불가피하기 때문이다. 소프트웨어 시스템을 바꾸려면, 코드를 제대로 이해하고 있어야 한다. 코드가 제대로 작성되어 있지 않고 지저분하다면, 코드 변경에 소모되는 시간과 비용은 결코 효율적으로 활용할 수 없다. 반면 코드가 생각된 구조를 잘 따르고, 정리되어 있으며 이해하기 쉽다면, 바로 그것이 클린 코드이다.
클린 코드 윈도우 개발의 기본 개념은 무엇일까?
클린 코딩은 이제 그 자체로 하나의 학문이라고 볼 수 있다. 클린 코딩의 몇 가지 기본 개념을 간단하 정리해보겠다.
코드 중복은 왜 안 좋은 것일까?
클린 코든 중복이 없는데, 그 이유는 코드 중복으로 인해 버그 픽스부터 업데이트, 유지보수까지 너무나 많은 문제를 발생시키기 때문이다.
“보이 스카우트” 규칙은 무엇일까?
코드는 항상 발견한 것보다 더 나은 상태로 유지되어야 한다. 만약 늘 조금이라도 더 좋은 코드로 확인하고 있다면, 코드베이스의 품질과 선명도는 시간이 지나면서 더욱 향상될 것이다. 반면 이 규칙을 지키지 않는다면, 시간이 지나면서 코드가 계속해서 돌게되고 이런 코드를 유지하는 것은 악몽같은 일이 되어버릴 것이다.
공감할 수 있는가?
여러분의 코드를 읽을 누군가를 신경쓰고 있다는 걸 보여주어야 한다. 예전에 전기 기사가 전기 배선에 스티커로 전선에 표시한 것을 본 적이 있다. 새로운 전기 기술자는이 표시를 보고 회로를 이해하고 수리하는 데 도움을 받을 수 있었다.
네이밍은 왜 중요한가?
코드는 변수, 상수, 메서드, 인수, 클래스, 디렉토리 등으로 가득 차 있다. 개발자가 엔티티 이름 지정에 시간과 주의를 기울인다면, 코드 가독성은 크게 높아질 수 있다. 변수 설명을 위해 많은 코멘트가 필요하지도 않을 것이다. 엔티티 네이밍 작업에는 목적, 기능, 용도를 명확하게 설명하는 이름을 선택해야 한다.
단일 책임 원칙(SRP)란?
기능이나 클래스가 둘 이상의 작업을 수행한다면, 이는 잘 설계되지 않은 것이다. 반면 한 가지 일만 잘하도록 설정한다면 가독성, 사용성, 변경성 모두 향상된다.
이상적인 함수 파라메터는 몇 개인가?
단일 파라메터 함수와 절차가 이상적이다. 그러나 최대 3개까지 늘릴 수는 있다. 위 모든 사항에 있어 여러 개의 파라메터 대신 단 하나의 객체를 전달해야 한다. 이 배열로 가독성은 향상되고, 필요한 경우 변경도 더욱 쉬워진다.
숫자와 문자열을 직접 사용하고 있다면?
코드가 ’33’이나 ‘m’과 같은 값을 할당해 사용한다면, 어떤 목적으로 사용하는 것인지 추측하기 어렵다. 상수의 이름은 상수라고 지정한 다음, 모든 할당에 이와 같은 상수를 사용해야 한다. 그래야 변경이 필요한 경우 한 곳에서만 간편하게 변경할 수 있다. 또한 향상된 가독성은 코드 유지 관리자들에게 매우 도움이 될 것이다.
코멘트를 남겨야 하는 이유?
코멘트는 코드의 근본 문제인 가독성과도 연관이 있다. 코드를 업데이트 할 때 많은 개발자들이 코멘트 업데이트를 무시한다. 이 상황이 지속되면 도움 보다는 오해의 소지를 불러일으킬 수 있다. 코멘트는 되도록 줄이고, 코드에 코멘트의 명확성을 포함하도록 해야한다. 물론 저작권 목적이나 타사 API 사용에 대한 설명은 필요하겠지만, 코드는 가능한 주석이 적어야 하며 읽기 쉬워야 한다.
코멘트를 남기고 있는가?
코멘트를 달아 코드를 숨기는 것이 일반적이기는 하지만, 가독성에는 좋지 않다. 코드를 보는 사람을 혼란스럽게 만들 수 있다. 일시적으로는 가능하겠지만, 체크아웃 전에는 해당 코드를 삭제해야 한다.
사람을 위해 작성하는가?
많은 프로그래밍 수업과 시험은 학생들을 한계점까지 다다르게하여 영리한 코드(작성자만이 이해가능한 코드)를 쓰도록 강요한다. 이는 클린 코드에 반대되는 것이다. 기계가 아닌 인간을 위한 코드를 작성하도록 항상 노력해야 한다. 클린 코드는 유지보수 담당자에게도 도움이 될 것이며, 여러분 또한 그 담당자가 될 수도 있다.
테스트를 충분히 하고 있는가?
코드가 특정 상황에서 동작할 경우, 이는 사용 가능한 것이라고 생각하기 쉽다. 그러나 가능한 시나리오에서 모두 작동할 수 있을까? 철저한 테스트없이는 확신할 수 없다. 테스트 주도 개발(TDD)은 테스트를 먼저 작성한 다음 테스트에 만족될 수 있는 코드를 작성하는 것을 의미한다. 테스트 가능한 코드를 작성하는 것은 곧 클린 코드를 작성하도록 요구한다. 유닛 테스트 또한 리팩토링에 필요하다. 테스트 없이는 코드를 변경할 수 없으며, 여전히 코드가 작동하는지 확신할 수 없기 때문이다.
코드 포맷팅은 잘 하고 있는가?
여러분 자신과 팀을 위해 스타일과 서식 규칙을 선택하고, 엄격하게 그 스타일을 따라야 한다. 적절한 서식을 지정하면 코드는 더 아름다워 질 수 있다. 쉽게 파악할 수 있고 전달도 더 잘 할 수 있다.
메소드 길이는 어떤가?
프로시저와 기능의 길이는 최소한이어야 한다. 코드로 단 한 가지만 하는 경우, 대부분의 메소드는 자동으로 짧아진다. 네이밍을 잘 하는 것과도 결부되어, 이 코드는 잘 쓰여진 산문처럼 읽힌다. 이 규칙은 클래스에도 적용된다.
더 많은 정보를 알고 싶다면?
위의 내용은 클린 코딩의 몇 가지 핵심 개념에 대한 간략한 소개일 뿐이다. 지식 향상을 위해서는 클린 코딩과 리팩토링 기술에 대한 많은 좋은 책들을 참고하기를 권한다.
- 클린 코드: A Handbook of Agile Software Craftsmanship by Robert C. Martin (Uncle Bob)
- 클린 코더: A Code of Conduct for Professional Programmers by Robert C. Martin (Uncle Bob)
- 리팩토링: Improving the Design of Existing Code by Martin Fowler
델파이는 클린 코딩을 위해 어떤 기능을 제공하는가?
그 자체가 하나의 예
델파이 자체는 클린 코드 윈도우 개발의 훌륭한 에이다. 델파이 소스 코드는 누구나 볼 수 있다. 이는 많은 소프트웨어 회사들과 개발자들에게 진실과 영감을 주는 원천이다.
유닛 테스트 기능
DUnit & DUnitX는 델파이용 자동화 유닛 테스트 프레임워크로, 코드 테스트를 더욱 빠르고 간편하게 만들어준다.
코드 포맷팅 기능 제공
델파이에는 코드 포맷팅 기능이 내장되어 있으며, 그 기능은 굉장히 훌륭하다. 자동화할 수도 있다.
클린 네이밍
델파이는 뛰어난 네임스페이스 아키텍처와 더불어 다양한 예제를 제공해 클린 네이밍을 지원한다.
뛰어난 리팩토링 지원
델파이의 리팩토링을 활용해 레거시 코드를 업데이트하고 클린하게 만들 수 있다.
최고의 IDE
델파이는 신속한 멀티-플랫폼 네이티브 개발에 이상적인 환경일 뿐 아니라, 개발자가 클린 코드를 빠르게 작성할 수 있도록 지원한다.
버전 컨트롤 지원
인기 있는 시스템에 대한 버전 컨트롤 지원이 내장되어 있어, 코딩에 더 쉽게 액세스할 수 있다. 개발자는 로깅에 대한 코멘트 등을 제거하고, 더 나은 코드 작성에 집중할 수 있다.
파스칼
오브젝트 파스칼은 순수하고, 뛰어난 학습 가능한 언어로, 델파이를 클린 코딩에 있어 최고의 개발 도구 중 하나로 만들어준다.
클린 코드 윈도우 개발, 준비됐는가?
올바른 도구와 기술을 사용하면, 여러분의 여행은 즐거워지고 번거로움도 없을 것이다. 실제 클린 코드 윈도우 개발의 여정을 시작하고 싶다면! 바로 지금 델파이 최신 버전을 무료로 다운로드 받아 시작해보기 바란다!