-
[Coding Convention] 프로그래밍 습관프로그래밍 언어 2022. 4. 15. 14:32
- #region 을 활용하여 관련 있는 코드는 묶기. 접었을 때 코드 찾기에 수월
- private, public 멤버 변수는 파일의 맨 위에 두고 아래 메소드를 작성
- 숫자 값을 하드코딩이 아닌 readonly 나 const 을 사용하기
그러나 상수의 사용(생성)은 자제해야 하며 필요하다면 데이터베이스나 파일에 기록하여 사용해야 함.
추후 수정이 필요한 경우 모든 관련 어셈블리를 다시 빌드해야 하기 때문(readonly를 사용 추천)
- 문자열을 하드코딩 하지 않기
- 문자열을 비교할 때는 대문자(혹은 소문자)로 변경한 뒤 수행하기 (Equal 메소드의 오버로드 중 비교타입에 IgnoreCase 를 설정해도 됨)
예)
if (name.ToLower() == "john") { //... }
- ""대신에 string.Empty 를 사용하기
예)
if (name == String.Empty) { // do something }
- 멤버 변수의 사용을 자제하기. 여러 메소드에서 사용해야 될 필요가 있는 변수는 메소드의 인자로 전달하는 구조를 사용. 멤버 변수를 사용했을 때 오류가 발생(중간에 값이 예기치 않게 변경)하면 어디서 바뀌었는지 찾기 힘듦.
- 열거형(enum) 대신 숫자나 문자열을 사용하지 않기.
예)
enum MailType { Html, PlainText, Attachment } void SendMail (string message, MailType mailType) { switch (mailType) { case MailType.Html: //Do something break; case MailType.PlainText; //Do something break; case MaiType.Attachment; //Do something brea; default: //Do something break; } }
나쁜 예)
void SendMail (string message, string mailType) { switch (mailType) { case "Html": //Do something break; case "PlainText"; //Do something break; case "Attachment"; //Do something break; default: //Do something break; } }
- 이벤트 핸들러에서 해당 이벤트의 작업을 수행하지 말고, 별도의 메소드를 호출하여 처리
- 로컬 경로나 드라이브명을 하드코딩 하지 않기
- 실행 경로가 특정한 곳(C:\)일 것이라는 가정하에 코딩하지 않기
- 어플리케이션이 시작되면 '셀프 체크'를 수행하여 필요한 파일들이 있는지 등을 확인하고 문제가 있다면 사용자에게 친절한 오류메세지를 보여주기
- 오류 메세지는 사용자로 하여금 문제 해결에 도움을 주는 단서가 됨. '오류가 발생하였습니다.', '어플리케이션 오류' 와 같은 메세지 대신 '데이터베이스 접속에 실패하였습니다. 로그인ID와 비밀번호를 확인하여 주십시오.' 와 같은 메세지를 보여주기.
- 사용자에게는 짧지만 친절한 메세지를 보여주되, 실제로는 알 수 있는 모든 정보를 기록한 로그파일을 만들어야 함. 이는 나중에 디버깅할 때 도움 됨.
- 컬렉션을 리턴 값으로 가지는 메소드가 있다면, 값이 없는 경우에 null 을 넘겨주기
- 데이터 베이스를 소켓, 파일스트림 등을 통해 열었을 때는 닫는 로직을 finally 이나 using을 사용. 이는 열고난 이후 닫기 전에 오류가 발생하여도 마지막에는 닫을 수 있도록 해줌.
- 루프 문에서 문자열 처리를 해야 할 때는 String 클래스 대신에 StringBuilder 클래스를 사용. String 객체는 동작방식이 미묘하여 문자열에 대해 새로운 작업(+, remove 등)이 일어날 때 이전 객체는 파기하고 항상 새로운 객체를 생성하도록 되어있음. (이러한 작업은 비용이 많이 듦)
'프로그래밍 언어' 카테고리의 다른 글
[Coding Convention] 주석, 예외처리 (0) 2022.04.15 [Coding Convention] 들여쓰기, 공백 (0) 2022.04.15 [Coding Convention] 명명 규칙과 표준 (0) 2022.04.15 [Coding Convention] 파스칼 케이싱, 캐멀 케이싱 (0) 2022.04.15