Re: [PATCH] Clear up perlcritic 'missing return' warning

Поиск
Список
Период
Сортировка
От Mike Blackwell
Тема Re: [PATCH] Clear up perlcritic 'missing return' warning
Дата
Msg-id CAESHdJoFenPdc=XfrzM5m9wCGqfHEbum0eQ4UwYRDGw+8vxOyA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: [PATCH] Clear up perlcritic 'missing return' warning  (Michael Paquier <michael@paquier.xyz>)
Ответы Re: [PATCH] Clear up perlcritic 'missing return' warning  (Andrew Dunstan <andrew.dunstan@2ndquadrant.com>)
Список pgsql-hackers
On Tue, May 22, 2018 at 3:32 AM, Michael Paquier <michael@paquier.xyz> wrote:

<snip> And this
maps with any C code.

The important differences here are:
  *) Declaring a C function as void prevents returning a value.  The intent not to return a value is clear to any caller and is enforced by the compiler.  There is no equivalent protection in Perl.
  *) Falling off the end of a C function that returns a type other than void has undefined results.  Perl will always return the value of the last statement executed.

Because Perl does allow returning a value without explicitly using return, it's easy to write code that breaks if an unwary person adds a line to the end of the subroutine.  There's a common constructor incantation that has this problem.  It's a real gotcha for C programmers just starting to poke around in Perl code.  

This difference also allows users of .pm modules to abuse the API of a method intended to be "void", if the value returned falling off the end happens to seem useful, leading to breakage if the method's code changes in the future.
 
This is most likely going to be forgotten.

That's what perlcritic is for. :)

Mike

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: [PATCH] (Windows) psql echoes password when reading from pipe
Следующее
От: Matthew Stickney
Дата:
Сообщение: Re: [PATCH] (Windows) psql echoes password when reading from pipe