vertfn
v1.1.2
면책 조항 : 거짓 긍정; 실제로 이것은 "집행"보다는 "탐사"에 유용합니다.
수직 순서
일반적으로 기능 통화 종속성이 하향 방향을 가리키기를 원합니다. 즉, 호출되는 함수는 호출을 수행하는 함수입니다. 이로 인해 소스 코드 모듈이 높은 수준에서 낮은 수준으로 낮아집니다. 신문 기사와 마찬가지로, 우리는 가장 중요한 개념이 먼저 올 것으로 예상하며, 최소한의 오염 세부 사항으로 표현 될 것으로 기대합니다. 우리는 낮은 수준의 세부 사항이 마지막으로 올 것으로 기대합니다. 이를 통해 우리는 소스 파일을 탈취하여 세부 사항에 자신을 흡수하지 않고 Frist 몇 가지 기능에서 요점을 얻을 수 있습니다.
- Clean Code, 5 장, P84, Robert C. Martin, 2009

go install github . com / nikolaydubina / vertfn @ latest vertfn --verbose ./...
다음 사례와 같이 잘못된 양성 비율을 향상시키는 것이 좋습니다.
Clean Code, 5 장, 코드 예제 WikiPageResponder.java
public class WikiPageResponder implements SecureResponder {
protected WikiPage page ;
protected PageData pageData ;
protected String pageTitle ;
protected Request request ;
protected PageCrawler crawler ;
public Response makeResponse ( FitNesseContext context , Request request )
throws Exception {
String pageName = getPageNameOrDefault ( request , "FrontPage" );
loadPage ( pageName , context );
if ( page == null )
return notFoundResponse ( context , request );
else
return makePageResponse ( context );
}
private String getPageNameOrDefault ( Request request , String defaultPageName )
{
String pageName = request . getResource ();
if ( StringUtil . isBlank ( pageName ))
pageName = defaultPageName ;
return pageName ;
}
protected void loadPage ( String resource , FitNesseContext context )
throws Exception {
WikiPagePath path = PathParser . parse ( resource );
crawler = context . root . getPageCrawler ();
crawler . setDeadEndStrategy ( new VirtualEnabledPageCrawler ());
page = crawler . getPage ( context . root , path );
if ( page != null )
pageData = page . getData ();
}
private Response notFoundResponse ( FitNesseContext context , Request request )
throws Exception {
return new NotFoundResponder (). makeResponse ( context , request );
}
private SimpleResponse makePageResponse ( FitNesseContext context )
throws Exception {
pageTitle = PathParser . render ( crawler . getFullPath ( page ));
String html = makeHtml ( context );
SimpleResponse response = new SimpleResponse ();
response . setMaxAge ( 0 );
response . setContent ( html );
return response ;
}
...
}