PHP 4에서 예를 들어, 함수 서명을 살펴보십시오 mktime()
.
int mktime ([ int $hour = date("H") [, int $minute = date("i") [, int $second = date("s") [, int $month = date("n") [, int $day = date("j") [, int $year = date("Y") [, int $is_dst = -1 ]]]]]]] )
혼란스럽지 않습니까? 이 기능을 "시간 만들기"라고하지만 일, 월 및 연도 매개 변수와 세 개의 시간 매개 변수가 필요합니다. 그들이 어떤 순서로 들어가는 지 기억하는 것이 얼마나 쉬운가요? 당신이 보면 mktime(1, 2, 3, 4, 5, 2246);
? 다른 것을 언급하지 않고도 이해할 수 있습니까? 되어 2246
24 시간의 시간 "22시 46분"으로 해석? 다른 매개 변수는 무엇을 의미합니까? 그것은 객체로서 더 나을 것입니다.
PHP 5로 이동하면 이제 DateTime 객체가 있습니다. 그 방법은 두 가지입니다 사이라고 setDate()
하고 setTime()
. 그들의 서명은 다음과 같습니다.
public DateTime setDate ( int $year , int $month , int $day )
public DateTime setTime ( int $hour , int $minute [, int $second = 0 ] )
여전히 매개 변수의 순서가 가장 큰 것에서 가장 작은 것임을 기억해야하지만 크게 개선되었습니다. 한 번에 6 개의 매개 변수를 모두 설정할 수있는 단일 방법은 없습니다. 이렇게하려면 두 번의 별도 호출을해야합니다.
Bob 아저씨가 말한 것은 평평한 구조를 피하는 것입니다. 관련 매개 변수는 하나의 객체로 그룹화해야하며, 3 개 이상의 매개 변수가있는 경우 의사 객체가있을 가능성이 높으므로 더 큰 분리를 위해 적절한 객체를 생성 할 수 있습니다. PHP는 별도의 없지만 Date
및 Time
클래스를, 당신은이 고려할 수 DateTime
정말로 포함되어 Date
객체와 Time
객체를.
다음 구조를 가질 수 있습니다.
<?php
$my_date = new Date;
$my_date->setDay(5);
$my_date->setMonth(4);
$my_date->setYear(2246);
$my_time = new Time;
$my_time->setHour(1);
$my_time->setMinute(2);
$my_time->setSecond(3);
$my_date_time = new DateTime;
$my_date_time->setTime($my_time);
$my_date_time->setDate($my_date);
?>
매번 2 ~ 3 개의 매개 변수를 설정해야합니까? 한 시간 또는 하루 만 변경하려는 경우 이제 쉽게 변경할 수 있습니다. 예, 각 매개 변수가 다른 매개 변수와 작동하는지 확인하기 위해 오브젝트의 유효성을 검증해야하지만, 어쨌든 그랬습니다.
가장 중요한 것은 이해하기 쉽고 유지 관리가 쉬운가입니다. 맨 아래의 코드 블록은 단일 mktime()
함수 보다 크지 만 이해하기가 훨씬 쉽다고 주장합니다. 프로그래머가 아닌 사람조차도 그 일을 수행하는 데 많은 어려움을 겪지 않을 것입니다. 목표는 항상 더 짧은 코드 나 더 영리한 코드가 아니라 유지 보수가 쉬운 코드입니다.
아, 그리고 글로벌을 사용하지 마십시오!
postLetter(string country, string town, string postcode, string streetAddress, int appartmentNumber, string careOf)
냄새 나는 버전의 제안 일 것 입니다postLetter(Address address)
. 계속해서 책을 읽으면, 그런 말이 되길 바랍니다.