source

PPDoc: @return void가 필요합니까?

nicesource 2022. 11. 14. 21:36
반응형

PPDoc: @return void가 필요합니까?

꼭 이런 일을 할 필요가 있을까요?

/**
 * ...
 * 
 * @return void
 */

반환값이 없는 메서드가 꽤 있는데, 이런 것을 코멘트에 넣는 것은 매우 장황한 것 같습니다.그것을 빠뜨리는 것은 나쁜 행동이라고 생각될까?

설명서에 명시되어 있는 경우는 그대로 둡니다만, 반드시 필요한 것은 아닙니다.그것은 전적으로 주관적인 결정이다.

개인적으로는 빼놓을 수 없어요.

편집
난 잘못을 인정합니다.약간의 검색 후 위키피디아 페이지에 다음과 같이 표시됩니다.

@return [type description]태그는 void 반환 유형으로 정의된 생성자 또는 메서드에 사용해서는 안 됩니다.

phpdoc.org 의 Web 사이트에는, 다음과 같이 기술되어 있습니다.

@return 데이터 유형 설명
@return datatype1| datatype2 설명

@return 태그는 함수 또는 메서드의 반환 값을 문서화하기 위해 사용됩니다.@return은 다른 자동 문서 태그 형식을 지원하기 위한 @return의 별칭입니다.

데이터 유형은 유효한 PHP 유형(int, string, bool 등), 반환되는 개체 유형의 클래스 이름 또는 단순히 "혼합"이어야 합니다.여러 개의 가능한 반환 유형을 명시적으로 표시하려면 공백 없이 파이프 구분 형식으로 나열하십시오(예: "@return int|string").클래스 이름이 @return 태그의 데이터 유형으로 사용되는 경우 phpDocumentor는 해당 클래스의 설명서에 대한 링크를 자동으로 만듭니다.또한 함수가 여러 개의 가능한 값을 반환할 경우 | 문자를 사용하여 이들을 구분하면 phpDocumentor는 반환값 내의 클래스 이름을 모두 해석합니다.php Documentor는 옵션 설명을 수정하지 않은 상태로 표시합니다.

수... 그걸 보면 보이드는 빼야 할 것 같아요.적어도 비표준적이긴 해요

php Documentor에 따르면 @return void는 유효합니다.

http://www.phpdoc.org/docs/latest/guides/types.html#keywords

... 이 유형은 일반적으로 메서드 또는 함수의 반환 유형을 정의할 때만 사용됩니다.기본 정의는 이 유형으로 표시된 요소에 값이 포함되어 있지 않으며 사용자는 검색된 값에 의존하지 않아야 한다는 것입니다.

예를 들어 다음과 같습니다.

 /**
  * @return void
  */
 function outputHello()
 {
     echo 'Hello world';
 }

위의 예에서는 return 문이 지정되어 있지 않기 때문에 return 값이 결정되지 않았습니다.

출처 : http://www.phpdoc.org/docs/latest/for-users/phpdoc/types.html (최신 페이지).

최근에 배운 내용 때문에 답변을 수정해야 합니다.

「」를 사용합니다.@return void@return null에는 매우 특별한 의미가 있습니다.PHP를 사용하다

<?php

/**
 * @return void
 */
function return_never() {
    echo "foo";
}

/**
 * @return null|string
 */
function return_sometimes() {
    if ($this->condition()) {
        return "foo";
    }
}

번째 에서는 PHP는 PHP를 반환합니다.NULLPHP를 반환하기 NULL그러나 반환된 값은 함수가 무엇을 했는지를 알 수 없기 때문에 발신자에게는 아무런 도움이 되지 않습니다.는 IDE의 할 수 .@return void목적 없이 반환값이 사용됨을 개발자에게 나타냅니다.

<?php

$foo1 = return_never();

$foo2 = return_sometimes();

「」가 포함되어 에, 합니다.변수에는 항상 다음 값이 포함되기 때문입니다.NULL두 번째는 실제로 무언가를 포함하고 있을 수 있습니다.이것은 함수 호출을 조건부로 하면 더욱 흥미로워집니다.

<?php

if (($foo1 = return_never())) {
    // Dead code
    var_dump($foo1);
}

if (($foo2 = return_sometimes())) {
    var_dump($foo2);
}

바와 같이, '우리'는 '우리'입니다.@return void에는 사용 사례가 있으므로 필요에 따라 사용해야 합니다.

또, 향후의 PHP PSR-5 [1]규격의 일부가 되는 것에 주의해 주세요.

[1] http://www.php-fig.org/psr/

php 7.1에서 는 유효한 반환 유형이며 함수에 적용할 수 있습니다.

항상 문서 블록에 추가하곤 했어요

하나의 은 이 글의 입니다.void할 수 @return부주의로 인해 문서 블록에 등록되었습니다.

Php Document 또는 주석을 이해하고 사용하는 방법은 다음과 같습니다.

<?php

/**
 * This method always returns string.
 * @return string
 */
public function useCase1()
{
    return 'foo';
}

/**
 * This method returns 2 data types so list them both using pipeline separator.
 * @return string|false
 */
public function useCase2()
{
    if ($this->foo === 1) {
        return 'foo';
    }
    return false;
}

/**
 * This method performs some operation and does not return anything so no return
 * annotation is needed.
 */
public function useCase3()
{
    $this->doOperation();
    $this->doAnotherOperation();
}

/**
 * If condition passes method returns void. If condition does not pass it returns
 * nothing so I think that specifying the return annotation with void is in space. :)
 * @return void
 */
public function useCase4()
{
    if ($this->foo === 1) {
        $this->doOperation();
        return;
    }
    $this->doAnotherOperation();
}

개인적으로는 함수 반환을 문서화하는 것이 전혀 중요하다고 생각합니다.현재 표준에는 반환되지 않는 함수에 대한 문서가 없습니다.따라서 리턴 보이드는 이 함수가 실제로 복귀한다는 것을 yes라고 말하는 방법입니다.

이 코드 블록을 고려합니다.

<?php

/**
 * @return void
 */
function return_void() {
    echo "foo";
}

/**
 * @return null|string
 */
function return_sometimes() {
    if ($this->condition()) {
        return "foo";
    }
}

/**
* This function actually doesnt return at all - it kills the script
**/
function noreturn() {
     //do somthing then
     die(); //or exit()
}

@return을 사용하면 적어도 함수가 반환됨을 알 수 있습니다.

언급URL : https://stackoverflow.com/questions/2061550/phpdoc-return-void-necessary

반응형