Reputation: 8262
I didn't go to school when I started learning to code. I read books and browse the web. And this question really didn't appear in any of the books I read. And if I search it online I don't know what to search so I apologize in advance if this is obvious to you because it isn't to me.
Anyway is this approach better if I want my code to be efficient:
if($a == $b && $a <= $c && strlen($a) > 100 && functionA($a) && functionC($c)){
//win
} else {
//fail
}
OR
is this better:
if($a != $b){
//fail
} elseif($a > $c) {
//fail
} elseif(strlen($a) < 100){
//fail
} elseif(!functionA($a)){
//fail
} elseif(!functionC($c)){
//fail
} else {
//win
}
In javascript, I see compilers mash code up and eliminate all white space as possible and change variable names to a single letter (e.g. thisname
to a
) etc. In my understanding they do it so that the size of the javascript file is so small that when the page asks for it, loading time wouldn't be a problem.
But how about for php
files? Which of the code above is better if I want my code to be efficient? why? AND Does the javascript scenario apply to php? Thanks
Upvotes: 0
Views: 67
Reputation: 1074
I'd say readability is most important factor, you won't win any speed anyway - compilers are quite smart.
if (passesRequirements($a, $c)) {
//win
}
function passesRequirements($a, $b)
{
return isNotEqual($a, $b)
&& isLargerThan($a, $b)
&& isShorterThan($a, 100);
}
function isShorterThan($str, $amount)
{
return strlen($str) < $amount;
}
and so on.
Upvotes: 1
Reputation: 521995
As has been noted in the comments, efficiency is the least of your concerns here, readability and thereby maintainability are more important. Typically you'd use a fail early approach to achieve this:
function myTest($a, $b, $c) {
if ($a == $b) {
return false;
}
if ($c < 10) {
return false;
}
if (...) {
return false;
}
...
return true;
}
Alternatively you may want to be throwing specific exceptions or return specific error codes instead of merely returning false
to signal exactly what was wrong.
Upvotes: 1