Path: csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: "J.O. Aho" Newsgroups: comp.lang.php Subject: Re: Shorter is not always better Date: Tue, 23 Nov 2021 12:17:13 +0100 Lines: 45 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Trace: individual.net KWhYsk/N2yopeF5zJbW+8wjVTb7uMHjkp/xlqvnNZFI9YFJFcc Cancel-Lock: sha1:3reEoZj3hZ86dQurX+psEZxqoeo= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.3.2 Content-Language: en-US-large In-Reply-To: Xref: csiph.com comp.lang.php:18814 On 23/11/2021 11.52, Arno Welzel wrote: > An simplified example from a real project: > > if (!($this->action[$key] ?? false)) { > > However to understand this you must know what the ?? operator means and > note the negation using ! in the beginning. What if you don't know about === then the null check below looks strange and you would think it has a bug. There will always be something you don't know about, but people tend to learn. > I would prefer a longer but easier to understand solution like this: > > if (!isset($this->statusActions[$key]) > || null === $this->statusActions[$key] > ) { > > Any thoughts on this? I do prefer the short one, but then I'm used to that kind of code and the code analyzer at work do complain when you have a lot of if statements with unnecessary and/or operators. There can also be code execution gains with the short compact code compared to do the "traditional" way. There been times where I have managed to make the code execution 1/100 of the original time using the shorter compact code. In the end it's about the head coders taste and maybe company coding standard that will dictate when you write, it's like some people like oop while others don't, it don't make the whole world what you pick, as long as the program works in the end in a safe way. Just look at the source code for mplayer, the rows are extreme short as the head coder max screen resolution was 800x600 and wanted to see all lines without row-wrapping. -- //Aho