문제

CF9에서 CFC를 작성하는 새로운 방법으로 CF9에 새로운 코딩 컨벤션은 무엇입니까?

여기 내가 생각할 수있는 몇 가지가 ...

  • 항상 로컬 범위를 사용하십시오
  • 항상 포함하십시오 init() 그 이후로 스스로를 반환하는 방법 New 발견되면 init ()에게 호출됩니다.
  • 하다 ~ 아니다 필요한 주장을 넣습니다 init() 그것이 ORM 엔티티 인 경우, 그렇지 않으면 예외를 기대합니다 ...
  • 항상 사용하십시오 THIS.setXXX xxx가 init () 내부의 속성 이름 인 위치에서, 사용 가능한 경우 암시 적 세터 또는 사용자 정의 세터를 호출합니다.
  • CF8 이전 인스턴스 범위 컨벤션을 포기하고 참조하십시오. http://henrylearnstorock.blogspot.com/2009/08/should-we-abandon-instance-scope-in-cf9.html
  • 출력 없음 = 구성 요소 및 스크립트 스타일 CFC의 함수에 대한 false, 다음을 참조하십시오. http://www.coldfusionjedi.com/index.cfm/2009/8/26/ask-a-jedi-impact-of-whitespace-and-script-cfcs
  • 더 깨끗하고 효율적으로 사용하십시오 isNull(arguments.optionalArg) 대신에 isDefined()
도움이 되었습니까?

해결책

컴포넌트에 대한 속성 출력 = false를 여전히 스크립트 스타일 CFC에서 설정해야합니까?

나는 그렇게 생각하지 않을 것입니다. <cfscript> 본질적으로 모든 흰색과 필요를 억제합니다 writeOutput() 출력을 전혀 사용하기 위해.

다른 팁

"new my.cfc ()"구문을 사용하여 호출하는 경우 init () 메소드가 "이"범위를 반환 할 필요가 없습니다. 실화.

CFC 안에 있고 속성을 설정하려면 this.setfoo ()를 사용하지 마십시오. getfoo ()도 마찬가지입니다. this.xxx ()는 정문 밖으로 나가는 것과 같습니다. 또한 액세스 = 개인 커스텀 게터 및 세터는 기능 이이 범위에 있지 않기 때문에 작동하지 않습니다.

"var foo"vs "local.foo" - 개인적으로, 나는 a) 유형의 코드가 적고 b) 읽을 코드가 적기 때문에 Var'd 변수를 선호합니다.

// there isnt a huge difference here
var today = now();
var tomorrow = dateAdd( 'd', 1, today );
local.today = now();
local.tomorrow = dateAdd( 'd', 1, local.today );

// but when you start getting more complex examples, it quickly blows out
var out = method( var1, var2, var3, var4, var5 );
local.out = method( local.var1, local.var2, local.var3, local.var4, local.var5 );

Javadocs 스타일의 의견을 사용하십시오. 문서는 당신의 친구입니다.

/**
* @hint This is a hint for the whole function
* @arg1 This is an argument hint
* @arg2 This is another argument hint
**/
public void function myFunction( string arg1 = 'default', boolean arg2 ) {
    return true;
}

데이터를 변경하는 모든 기능은 현재 항상 사실 인 부울 인 경우에도 일부 값을 반환해야합니다. 함수는 결국 거짓을 반환 할 필요가있는 방법이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top