[part 2] PHP로 좋은 객체 지향(OOP) 습관을 가집시다.
부제: 각 모듈은 자체 오류를 처리
클래스를 만들면 자체 오류를 적절하게 처리해야합니다.
클래스가 오류를 처리하는 방법을 모르는 경우 클래스는 호출자가 이해하는 형식으로 패키지해야합니다.
또한 널 (NULL)이거나 유효하지 않은 상태의 오브젝트를 리턴하지 마십시오.
여러 번, 인수를 확인하고 제공된 인수가 유효하지 않은 이유를 나타내는 특정 예외를 throw 하여
이를 간단하게 수행 할 수 있습니다.
이 습관을 구축하면 코드를 유지 관리하거나 사람들을 사용하는 사람들이 많은 시간을 절약 할 수 있습니다.
나쁜습관 : 오류 처리 안함
아래 예제를 살펴보면, 인수를 받아들이고 일부 Person값이 채워진 객체를 리턴합니다.
그러나 parsePersonName()메서드에서는 제공된 $val 변수가 null 인지, 길이가 0 인 문자열인지 또는 구문 분석 할 수 없는 형식의 문자열 인지
확인하는 유효성 검사가 없습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php class PersonUtils { public static function parsePersonName($format, $val) { if (strpos(",", $val) > 0) { $person = new Person(); $parts = split(",", $val); // Assume the value is last, first $person->setGivenName($parts[1]); $person->setFamilyName($parts[0]); } return $person; } } | cs |
좋은 습관 : 각 모듈은 자체 오류를 처리
설정되지 않은 변수가 유효한 결과를 생성 할 수 없으면 변수를 검사하고 InvalidArgumentException 내보냅니다.
문자열이 비어 있거나 특정 형식이어야하면 형식을 확인하고 예외를 발생시킵니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php class InvalidPersonNameFormatException extends LogicException {} class PersonUtils { public static function parsePersonName($format, $val) { if (! $format) { throw new InvalidPersonNameFormatException("Invalid PersonName format."); } if ((! isset($val)) || strlen($val) == 0) { throw new InvalidArgumentException("Must supply a non-null value to parse."); } } } | cs |
다른 사람들이 클래스 자신의 내부 동작을 알지 못해도 클래스를 사용할 수 있기를 원한다는 것입니다.
잘못 사용하거나 의도하지 않은 방식으로 사용하면 왜 작동하지 않았는지 추측해서는 안됩니다.
'소행성이야기' 카테고리의 다른 글
코드이그나이터에서 JWT 사용하기 (0) | 2018.07.09 |
---|---|
JWT의 구조는 어떻게 생겼을까? (1) | 2018.07.09 |
JWT 왜 사용할까요 ? (0) | 2018.07.09 |
[part 3] PHP로 좋은 객체 지향(OOP) 습관을 가집시다. 부제: 메두사를 바라 보지 마라 (0) | 2018.07.09 |
[part 1] PHP로 좋은 객체 지향(OOP) 습관을 가집시다. (0) | 2018.07.06 |