i

[펌]잘못된 PHP 코딩 스타일

읽어볼만 한 내용인것 같아서 퍼왔습니다.

출처 링크로 가시면 클래스, 템플릿, 프레임워크 등에 관한 글이 꽤 인상적입니다.
시간나시면 천천히 읽어보시면 꽤 도움이 되지 않을까 생각됩니다.

********************************************************************

1. 문자 쿼테이션

- 잘못된 코딩

$ret = $arr[var1];

- 올바른 코딩

$ret = $arr['var1'];

배열의 키 문자는 반드시 싱글 쿼테이션으로 처리해 주어야 한다. 쿼테이션이 들어가 있지 않은 변수인 경우 Notice 에러가 발생한다.
또한 싱글 쿼테이션과 더블 쿼테이션의 차이점을 명확히 알고 사용하는 것도 중요하다. 일반 문자열의 경우에는 싱글 쿼테이션을 사용하는 것이 바람직하다.


2. 변수 초기화

- 잘못된 코딩

$str .= "abc";

- 올바른 코딩

$str = "";
$str .= "abc";


변수를 초기화 하지 않은 상태에서 변수를 마구 사용하는 경우가 허다하다. 이는 올바른 코딩 스타일이 아니다.
첫번째 구문은 초기화 없이 $str 이 추가되므로 Notice 에러가 발생한다. 변수를 초기화하는 습관을 들이도록 노력하자.


3. 변수 타입의 변경

- 잘못된 코딩

$int = 3;
$int = "Hello, World";

- 올바른 코딩

$int = 3;
$str = "Hello, World";


PHP 에서는 형변환이 아주 자유롭지만 그렇다고 해서 위와 같이 마구잡이로 형변환을 하는 것은 아주 좋지 못한 습관이다.
되도록 동일한 변수명의 경우 동일한 타입을 유지시켜주는 것이 좋다.


4. isset 의 활용

- 잘못된 코딩

$var = $_POST['var'];

- 올바른 코딩

$var = isset($_POST['var']) ? $_POST['var'] : NULL;


POST 값으로 var 이라는 변수의 값을 넘길 경우에 대부분의 php 프로그래머들은 위와 같이 코딩한다.
그러나 이러한 코딩은 가끔씩 Notice 에러를 발생시킨다. 이유는 POST 로 var 라는 변수의 값이 넘어오지 않았을 때이다.
따라서 정확하게 사용하려면 두번째와 같이 코딩해야 한다. 그러나 매번 이렇게 코딩하는 것이 번거롭기 때문에 적당한 함수를 만들어서 사용하는 것이 좋다.


5. global off

대부분의 php 프로그래머들은 global on 에 익숙해져 있다. 즉 GET, POST 로 넘어오는 변수를 별도로 $_GET, $_POST 를 통해 받지 않고 그냥 바로 사용하는 경우이다. 그러나 이것은 보안에 무척 취약하며 반드시 global off 로 설정되어 있다고 생각하고 프로그램을 작성해야 한다.


6. 연산자 사용시 주의

- 잘못된 코딩

$foo[$i++] = $j;

- 올바른 코딩

$foo[$i] = $j;
$i++;

++, -- 연산자는 되도록 키 변수안에서 사용하지 않도록 한다.


7. 잘못된 for 문 사용

- 잘못된 코딩

for($i=0; $i<count($loop); $i++) {
...
}

- 올바른 코딩

for($i=0, $max=count($loop); $i<$max; $i++) {
...
}

for 문안의 조건절에 되도록 함수를 사용하지 않도록 한다. 실수로 무한루프가 도는 경우가 생길 수 있다.


8. 잘못된 if 문의 사용

- 잘못된 코딩

if($row = getRows()) {
...
}

- 올바른 코딩

if(($row = getRows()) == true) {
...
}

조건절 안에서는 되도록 코딩을 쉽고 명확하게 해야 한다. 첫번째와 같이 코딩한 경우 다른 사람이 소스를 잘못 읽을 가능성이 아주 많다. 또한 if 문에서는 간단한 구문일지라도 { } 를 반드시 사용하길 권한다.


9. error_reporting() 사용

확실한 디버깅을 위해 error_reporting(E_ALL) 을 사용하길 권한다.
이를 통해 내가 어느 부분에서 코딩을 잘못하고 있었는지를 쉽게 찾아낼 수 있을 것이다.<div class='small'>[이 게시물은 관리자님에 의해 2011-10-31 17:12:10 PHP & HTML에서 이동 됨]</div>
|

댓글 6개

좋은 자료 감사합니다....^^
감사합니다.
스크랩 합니다. ^^;
jsp를 공부해 보고 싶은 생각이 듭니다.

일단 선언(또는 정의 및 초기화)되지 않았다면,

해당 변수의 사용은 제약(사용할 수 없음)을 받는 형태에 대해서...


php가 접근성이 쉬운 이유가 바로

생략도 가능하고 생각하는대로(?!) 적용이 가능하다는 점이 아닐까 생각이 듭니다.
난 여태 잘못 알고 잘못 사용하고 있었네... -.ㅠ
좋은 정보 감사합니다.
좋은 자료 감사합니다.
좋은자료 감사합니다.
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

태그 필터 (최대 3개) 전체 개발자 소스 기타 mysql 팁자료실 javascript php linux flash 정규표현식 jquery node.js mobile 웹서버 os 프로그램 강좌 썸네일 이미지관련 도로명주소 그누보드5 기획자 견적서 계약서 기획서 마케팅 제안서 seo 통계 서식 통계자료 퍼블리셔 html css 반응형 웹접근성 퍼블리싱 표준화 반응형웹 홈페이지기초 부트스트랩 angularjs 포럼 스크린리더 센스리더 개발자톡 개발자팁 퍼블리셔톡 퍼블리셔팁 기획자톡 기획자팁 프로그램강좌 퍼블리싱강좌
+
제목 글쓴이 날짜 조회
19년 전 조회 1,454
19년 전 조회 1,587
19년 전 조회 1,858
19년 전 조회 1,620
19년 전 조회 1,826
19년 전 조회 1,614
19년 전 조회 2,006
19년 전 조회 1,894
19년 전 조회 1,499
19년 전 조회 1,501
19년 전 조회 1,411
19년 전 조회 1,280
19년 전 조회 1,454
19년 전 조회 2,027
19년 전 조회 2,439
19년 전 조회 2,932
19년 전 조회 2,351
19년 전 조회 1,857
19년 전 조회 7,082
19년 전 조회 3,776
19년 전 조회 2,383
19년 전 조회 2,402
19년 전 조회 2,891
19년 전 조회 5,823
19년 전 조회 5,605
19년 전 조회 2,291
19년 전 조회 3,342
19년 전 조회 2,900
19년 전 조회 2,258
19년 전 조회 2,773
19년 전 조회 1,630
19년 전 조회 1,784
19년 전 조회 1,882
19년 전 조회 2,056
19년 전 조회 1,732
19년 전 조회 1,871
19년 전 조회 1,827
19년 전 조회 1,897
19년 전 조회 1,578
19년 전 조회 2,696
19년 전 조회 2,032
19년 전 조회 3,289
19년 전 조회 3,321
19년 전 조회 2,576
19년 전 조회 2,656
19년 전 조회 2,487
19년 전 조회 2,737
19년 전 조회 2,736
19년 전 조회 3,209
19년 전 조회 2,916
19년 전 조회 5,331
19년 전 조회 2,158
19년 전 조회 2,243
19년 전 조회 2,065
19년 전 조회 1,976
19년 전 조회 1,981
19년 전 조회 2,172
19년 전 조회 3,245
19년 전 조회 3,111
19년 전 조회 2,892
19년 전 조회 2,596
19년 전 조회 2,676
19년 전 조회 2,340
19년 전 조회 2,373
19년 전 조회 1,643
19년 전 조회 2,361
19년 전 조회 2,715
19년 전 조회 2,708
19년 전 조회 3,017
19년 전 조회 2,791
19년 전 조회 1,753
19년 전 조회 1,864
19년 전 조회 2,776
19년 전 조회 2,261
19년 전 조회 4,022
19년 전 조회 2,526
19년 전 조회 2,418
19년 전 조회 3,565
19년 전 조회 3,136
19년 전 조회 2,276
19년 전 조회 3,067
19년 전 조회 2,279
19년 전 조회 3,127
19년 전 조회 3,535
19년 전 조회 5,249
19년 전 조회 3,160
19년 전 조회 3,164
19년 전 조회 2,756
19년 전 조회 2,495
19년 전 조회 2,740
19년 전 조회 2,481
19년 전 조회 2,594
19년 전 조회 2,399
19년 전 조회 2,729
19년 전 조회 3,004
19년 전 조회 3,288
19년 전 조회 7,088
19년 전 조회 5,215
19년 전 조회 2,467
19년 전 조회 5,200