Notice
Recent Posts
Recent Comments
Link
- Korea times
- 끌리면 오라...BGM 광고음악 라이브러리
- KartOO visual meta search engi…
- E-Book
- Channel9
- MSDN
- 여리의 작업실
- 유경상의 .NET 블로그
- window 쪼물딱 거리기
- 블루 홈(소현이 누님)
- IT 관련 전반 내용(정환이네)
- 비너스의 정보 공유(유틸리티들)
- 형기의 자료공간(디지털ERA에서 콘텐츠ERA로)
- EzineArticles (여러 분야의 글들이 올라옴)
- Relationship을 보여주는 라이브러리
- OpenRCE
- 젠틀의 블로그(무선 통신의 모든것)
- 헐랭이와 IT보안
- 워니. 추억ㅇㅔ ㅂㅣ추ㅇㅓ.
- Computer Forensics
- 토익 광장(YBM)
- Korea Times 이용하기
- Larkware Software
- TCP/UDP
- Black Hat
- DEF CON
- Slashdot
- ReallyUsefulEbooks.com Update
- 실리콘밸리 뉴스
- Application Development Trends
- Visual Studio Hacks
- MIT OCW
- Redmond Developer News
- SecurityFocus
- Microsoft Window Hacking Porta…
- Darknet - Don't Learn to Hack …
- Windows Tips, Tricks and Hacks
- Hack In the Box
- (IN)SECURE Magazine
- SuperSite Windows Vista
- Government Security
- Life is Still Talking (Good)
- PHRACK
- Found+Read(resource for startu…
- Jonathan Boutelle
- Venture Hacks
- 스마트플레이스
- All about Intellipedia
- Undocumented Windows 2000 Secr…
- HexBlog (Decompiler)
- TED (Ideas worth spreading)
- Crash Dump Analysis and Debugg…
- Rootkit
- DDK Developers(MS)
- 미친 감자의 블로그
- The Art of Assembly Language
- Chpie (키보드 후킹)
- Drivers Online
- (음악) Delicate SONG
- Reverse Engineering Community
- Software Best Practices
- Sara Ford's WebLog
- Cheat Happens
- Debugging,Unpacking,Assembling…
- 윤석찬님 블로그
- OK 괜찮아 다 잘 될거야
- RingBlog
- Art Life :: 하늘소
- IT's Paradise
- John Robbins!
- Wintellect
- Hacked Gadgets
- 소프트웨어 이야기
- Ryan Naraine's Zero Day
- VULN
- Stay Secure
- EBS 영어 공부(블루워터)
- 101BLoG : "Bright Size Life" o…
- Hacker Challenge
- Hackers Center
- White Hat, Chicago Con
- Ethical Hacker Network
- ChaseNet (Security)
- TechTarget
- Entrepreneur
- Infopackets
- Popular Science
- Dark Reading - The Business of…
- How Stuff Works
- codeDriver - Crack (역공학)
- Gadget (Windows)
- Serious Code
- Iguacu Blog(블루문)
- SecurityProof
- Power of Community(Hacker)
- Crack ?
- Security Freak
- Data Network Resource
- FoundStone - Security Consulti…
- Google Online Security Blog
- (BOOK) Cool DogBooks
- SachaBarber (좋은 개발자)
- System Software Incorporation
- 스카이 벤처
- NewsTorrent
- 글로벌 IT 네트워크
- Ethical Hacking and Infosec
- Realms of Hacking tricks
- CodeBreakers Journal
- Anti Rootkit Blog
- The Reverse Code Engineering C…
- Anti-Debug Tools
- Reverse Code Engineering Video…
- Damn Vulnerable linux
- Security Problems
- French Reverse Engineering Tea…
- Monac
- Open Source Vulnerability Data…
- Viruschaser 검사(바이러스)
- Windows Tips
- 보안 대처 연습
- [Download] Kartz CD
- [Download] FlMS Download
- [Download] DDL2
- 중국 해킹 사이트(안전중국)
- 바이러스 분석
- Javascript 전문가
- Virus Alert Zone (바이러스 분석)
- Computer World
- 문스랩닷컴(보안)
- Unpack China
- Black Storm Reverse Engineerin…
- 역공학 Reverser
- 문화 망명지 - 시, 소설
- WPF MVP
- Research Channel
- The Problem Solver - C# MVP
- Reversing - 리버스 엔지니어링
- Nigel Spencer's Blog (.NET)
- Kirill Osenkov (.NET C# IDE Te…
- H33T (BitTorrnet 검색 사이트)
- ITL (해킹, 보안)
- ITL (Invisible Things Lab) Blo…
- ebook, pdf, chm
- 주식 - 멘토클리닉
- CherryLove - 바이러스, 백신, 악성코드
- PMP
- 영원한 해커, hacker
- 리버싱, PE
- 신호철 - dsphome
- TechEd 2009
- SHOUT
- [도서] 오디오북
- [도서] 전자책
- [도서] 국내도서요약
- [도서] 해외도서요약
- TopCorder - 프로그래밍 연습
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- security
- 책
- WPF
- 디버깅
- 해킹
- MVP
- C#
- 역공학
- VSTS
- Windows
- 디버그랩
- .NET Framework
- .net
- 마이크로소프트
- english
- 비주얼 스튜디오
- Windows 7
- 비주얼스튜디오
- VSTS 2010
- Visual Studio
- 구글
- Microsoft
- visual studio 2010
- 보안
- debugging
- 닷넷
- hacking
- .net framework 4
Archives
- Today
- Total
NaggingMachine
코드의 가독성, 매개 변수는 요렇게.. 본문
얼마전 HS님이 심심풀이로 만들어본 한글 Naming~ ㅋ라는 글을 하나 올리셨습니다. 변수명에서 유니코드가 지원되는 사실에 착안해서 간단하게 소스코드를 만들어주셨는데, 그 글을 보고 있자니 코드의 가독성을 위해 개발자가 취할 수 있는 여러가지 방법들이 떠올랐습니다. 제가 프로그래밍 강의를 하면서 자주 써먹었던 내용인데요,
간단한 예를 하나 들어보면, 다음과 같이 함수에 넘기는 여러가지 매개 변수들이 있을 수 있습니다.
int foo (char * szFirstName, char * szLastName, char * szFullName);
이 함수는 첫번째와 두번째 매개 변수인 szFirstName과 szLastName을 전달하면 이름을 조합해서 szFullName으로 이름을 넘겨주는 기능을 제공합니다. 하지만 만약 저 코드만 딸랑 있다면 foo 함수를 사용하는 사용자는 마지막 매개 변수인 szFullName도 자신이 작성해서 넘겨줘야 하는건지 아니면 전달받는 것인지를 쉽게 판단할 수 없게 됩니다. 소스 코드를 볼 수 있다면 구현부를 보고 판단할 수 있겠지만, 그나마도 불가능하다면 이리저리 테스트를 해보는 수 밖에요.
이 경우 여러 가지 방법으로 코드의 가독성을 높일 수 있습니다.
- 함수의 이름을 BuildFullNameFromFirstNameAndLastName 과 같이 함수의 기능을 설명할 수 있도록 변경합니다. 그런데 함수 이름이 너무 길죠?
- szFullName을 foo 함수의 리턴 값으로 지정합니다. 이렇게 되면 함수의 성공 및 실패, 또는 그 밖의 예외적인 상황에 대한 상태값을 반환하기가 어려워집니다.
- const char * szFirstName, const char * szLastName, char * szFullName 과 같이 선언함으로써 szFullName이 변경 가능하다는 것을 명시합니다. 이 방법은 szFirstName과 szLastName의 경우에는 컴파일러의 도움으로 변경이 불가능함을 강제할 수는 있지만 개발자에게 큰 도움은 안될것 같네요.
- FullName이라는 클래스를 만들어서 szFirstName과 szLastName을 property로 전달해주면 전체 이름을 얻을 수 있도록 구성합니다. 그런데 그러기에는 부담이 너무 크죠?
어떤 방법을 사용할 것인지는 여러분의 판단에 맞기겠지만, 저는 주로 in, out, inout과 같은 별도의 키워드를 지정해서 사용해오고 있습니다. 이 함수는 다음과 같이 변경이 가능하겠습니다.
#define IN
#define OUT
#define INOUT
int foo (IN char * szFirstName, IN char * szLastName, OUT char * szFullName);
사실상 IN과 OUT은 컴파일러 입장에서보면 아무 의미가 없지만, 사람이 읽고 이해하기에는 이보다 좋은 방법이 없는것 같습니다.
여러분들은 어떤 방법을 사용하고 계시나요? ^^
'TechnoBabbler' 카테고리의 다른 글
Windows 7을 구입하면 Windows XP로 다운그레이드 가능 (2) | 2009.04.07 |
---|---|
크롬에서 구글을 거부하네? (4) | 2009.04.02 |
Windows Mobile 원격 관리 (0) | 2009.04.01 |
Microsoft Virtual Techdays 2009, 마이크로소프트가 제공하는 무료 강좌 (0) | 2009.03.31 |
TrueCrypt (0) | 2009.03.26 |