2015-12-02 3 views
0

Я прочитал статьи (например, here и here), которые предполагают, что это вредит читаемости для использования логических переменных в параметрах функции. Это имеет смысл для меня; трудно определить, что означает «ложь» при вызове функции с myFunction (false). Было бы лучше, если бы аргумент в вызове функции был более наглядным. Что-то, чтобы указать , что устанавливается true/false.Улучшение удобочитаемости логического параметра в функции PHP

Что такое хороший способ иметь логический или логический параметр в функции PHP, более наглядной, чем true/false?

+5

Определите некоторые константы, имеющие значение для этой функции. например 'define ('DISABLE_LOGGING', false); define ('ENABLE_LOGGING', true); myFunction (ENABLE_LOGGING); ' –

+0

@MarkBaker: спасибо, звучит как хороший вариант. – Cerulean

ответ

1

Предполагая, что у вас есть метод, как это:

function fetchProducts($useCaching) { /* ... */ } 

И вы называете это так:

fetchProducts(true) 

Вы могли бы вместо этого:

1) создать два отдельных методов:

fetchProducts() 
fetchFreshProducts() 

2) или называть его так:

fetchProducts($useCaching = true) 

Второе, что полезно и для других типов данных. Например, когда вы вызываете метод, который принимает 2 целых числа в качестве параметров. Но не делайте этого, если вы не используете парадигму ООП. Вы не хотите загрязнять глобальную область новыми именами переменных, чтобы получить некоторую читаемость.

+0

'fetchProducts ($ useCaching = true)' - этот подход обращается ко мне, потому что он хорошо читаем, но я читал, что это плохая идея, потому что эффект заключается в том, что вы определяете $ useCaching как истинный в глобальном контексте. Это большая проблема? Я довольно новичок в PHP. – Cerulean

+0

Да, это большое дело. Этот aproach хорошо работает только с объектными методами - когда вы кодируете парадигму ООП. Затем вы загрязняете сферу применения данного метода - это не проблема, и он рассчитывает получить читаемость таким образом. – Luigi

+0

С параметрами типа boolean Вы должны, вероятно, просто создать два отдельных метода. Это на самом деле совет [Дядя Боб] (https://en.wikipedia.org/wiki/Robert_Cecil_Martin), и поиск ссылки Я даже нашел соответствующий [meme] (http://memegenerator.net/instance/39447402): D. – Luigi

Смежные вопросы