종속 파일 팩스
4471 단어 Refactoring
하면, 만약, 만약...
이런 상황에서의 실천을 소개하겠습니다.
박스
# ModelA
sub is_kuso_code {
my $self = shift;
my $is_kuso = ...;
return $is_kuso ? 'y' : 'n'; # bool ぽい値じゃなくて文字列の y/n を返している・・だと!
}
위와 같은 스팸 코드가 있다고 가정해 보세요.그나저나 이 녀석
if (is_kuso_code()) ..
이면 전부 스팸코드로 판정될 거야DB에 enum으로 y/n에 저장된 것을 당기면 보기 드문 일이 발생할 수 있습니다.
대응
먼저 각 모듈에 UnitTest를 써야 합니다.만약 그것이 당연한 일이라면, 나는 언제 일을 팩스로 보낼 것인가를 고려할 것이다.
다 같이 고치면 설치도 검사도 힘들 테니 조금씩 고치세요.
모두 고쳐!!!한숨을 쉬어도 중도에서 좌절하고, 마지막 결말은 이 빚을 계속 남기는 것이다.
1. 부채에 대한 의존도를 더 이상 높이지 마라
기존 행동을 바꾸지 않으면서 새롭게 사용하려면 당연히 좋은 방법을 사용하게 된다.
여기서
uses_deprecated_kuso_condition_output
길어 보이지만 수상한 이 속성을 ON으로 설정하면 y/n이라는 문자열을 돌려주세요.(또는
is_kuso_code()
를 is_legacy_kuso_code()
로 개명하는 등 다시 제작is_kuso_code()
할 수도 있다.# ModelA
# モデルのプロパティ
__PACKAGE__->mk_accessors(qw/
uses_deprecated_kuso_condition_output
/);
sub is_kuso_code {
my $self = shift;
my $is_kuso = ...;
if ($self->uses_deprecated_kuso_condition_output) {
# こっちは新規では使わないでね
return $is_kuso ? 'y' : 'n';
} else {
# perl では true/false は 1/0 とか 1/undef とかだよ
return $is_kuso ? 1 : 0;
}
}
ModelA를 수정했다면, 사용한 부분은 모두uses-입니다.deprecated_kuso_condition_계속해.# some page
- my $modelA = ModelA->new();
+ my $modelA = ModelA->new({uses_deprecated_kuso_condition_output => 1});
my $is_kuso = $modelA->is_kuso_code();
if ($is_kuso == 'y') {
...
이렇게 하면 ModelA를 사용하는 페이지 동작이 바뀌지 않고 새로 ModelA를 사용할 때 나쁜 방법을 사용하지 않는다.어쨌든 이렇게 하면 상황이 더 이상 나빠지지 않을 것이다.
(만약 시험을 쓰지 않았다면 정말 영향이 없을까? 이런 것은 자신감을 잃을 수 있기 때문에 시험은 전제가 있다.)
2. 기존의 구용법을 수정하는 곳
uses_deprecated_kuso_condition_output 같은 곳에서grep은 이 속성을 사용하는 부분을 천천히 수정하는 데 시간을 쓴다.
하나하나 하다 보면 동작 확인 범위도 좁아지기 때문에 사고의 팩스를 줄일 수 있다.
또 세분화를 통해 남은 시간 동안 팩스를 할 수도 있고, 여러 사람이 병행해 빚을 갚을 수도 있다.
Reference
이 문제에 관하여(종속 파일 팩스), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/halhorn/items/f2fc43c9836e481310c3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)