Я предпочитаю Опцию A
bool a, b, c;
if( a && b && c )
{
//This is neat & readable
}
, Если у Вас действительно есть особенно долгие условия переменных/метода, Вы можете просто разрыв строки их
if( VeryLongConditionMethod(a) &&
VeryLongConditionMethod(b) &&
VeryLongConditionMethod(c))
{
//This is still readable
}
, Если бы они еще более сложны, тогда я рассмотрел бы выполнение методов условия отдельно вне, если оператор
bool aa = FirstVeryLongConditionMethod(a) && SecondVeryLongConditionMethod(a);
bool bb = FirstVeryLongConditionMethod(b) && SecondVeryLongConditionMethod(b);
bool cc = FirstVeryLongConditionMethod(c) && SecondVeryLongConditionMethod(c);
if( aa && bb && cc)
{
//This is again neat & readable
//although you probably need to sanity check your method names ;)
}
, по моему скромному мнению, единственная причина опции 'B' будет состоять в том, если Вы будете иметь отдельный else
функции для выполнения за каждым условием.
, например,
if( a )
{
if( b )
{
}
else
{
//Do Something Else B
}
}
else
{
//Do Something Else A
}
Если вы используете PHP 5, ваш инструмент - Reflection API .
Пример:
$class = new ReflectionClass("NameOfTheClass");
$methods = $class->getMethods();
foreach($methods as $m) {
print $m->name;
$m->isPrivate() ? print "Private" : print "";
$m->isPublic() ? print "Public" : print "";
$params = $m->getParameters();
foreach($params as $p) {
print $p->getName();
}
}
Я предлагаю следующую процедуру:
get_declared_classes
, get_declared_interfaces
и get_defined_functions [вы 1139768] (если действительно нуждаются в их поддержке)
get_declared_classes
, get_declared_interfaces
и g et_defined_functions
с сохраненными вами, чтобы узнать, что нового Apple теперь поощряет людей получать шаблоны непосредственно из проекта PyObjC. На Cocoabuilder есть хорошая цепочка объяснений со следующим советом от bbum:
Вам необходимо загрузить и установить шаблоны из PyObjC
репозиторий или веб-сайт.Шаблоны были извлечены из выпуска, поскольку шаблон
разработка идет в ином темпе и по графику, чем Xcode
выпускает. Слишком часто шаблоны устарели к тому времени
диски были нажаты.
На веб-сайте PyObjC есть как шаблоны для загрузки, так и отличная документация / учебные пособия, чтобы вставать и продолжать.
Изменить: Будучи немного более конкретным, вот что у меня сделано, чтобы PyObjC работал в Snow Leopard:
Используя Finder, я перешел к Перейти> Подключиться к серверу ...
и подключился к http://svn.red-bean.com/pyobjc/trunk/pyobjc/pyobjc-xcode/ в качестве гостя.
Затем я создал папку под названием Xcode
в моей локальной системе по адресу ~ Library / Application Support / Developer / Shared / Xcode /
. (Возможно, у вас уже есть эта папка, но я еще ничего не настраивал для себя.)
Я скопировал папку File Templates
с сервера Red-Bean в свою новую папку Xcode. Теперь шаблоны находятся в разделе «Пользовательские шаблоны» Нового проекта ...
и Новый файл ...
windows.
Проект по умолчанию, созданный "из коробки" (не нужно устанавливать что-либо еще из проекта PyObjC или py2app). Я сколотил глупую программу с одной кнопкой и действием, и она прекрасно работала, включая интеграцию с Interface Builder (я мог управлять перетаскиванием, чтобы связать действия и выходы).
Я также недавно наткнулся на ] серия руководств «Приступая к работе» в блоге, которая показалась весьма полезной для начинающих. Похоже, что автор приложил много усилий к серии "Создание графического интерфейса пользователя какао на Python с помощью PyObjC" (в настоящее время состоит из 6 частей).
и Новый файл ...
windows.
Проект по умолчанию, созданный "из коробки" (не нужно устанавливать что-либо еще из проекта PyObjC или py2app). Я сколотил глупую программу с одной кнопкой и действием, и она прекрасно работала, включая интеграцию с Interface Builder (я мог управлять перетаскиванием, чтобы связать действия и выходы).
Я также недавно наткнулся на ] серия руководств «Приступая к работе» в блоге, которая показалась весьма полезной для начинающих. Похоже, что автор приложил много усилий к серии "Создание графического интерфейса пользователя какао на Python с помощью PyObjC" (в настоящее время состоит из 6 частей).
и Новый файл ...
windows.
Проект по умолчанию, созданный "из коробки" (не нужно устанавливать что-либо еще из проекта PyObjC или py2app). Я сколотил глупую программу с одной кнопкой и действием, и она прекрасно работала, включая интеграцию с Interface Builder (я мог управлять перетаскиванием, чтобы связать действия и выходы).
Я также недавно наткнулся на ] серия руководств «Приступая к работе» в блоге, которая показалась весьма полезной для начинающих. Похоже, что автор приложил много усилий к серии "Создание графического интерфейса пользователя какао на Python с помощью PyObjC" (в настоящее время состоит из 6 частей).
Я сколотил глупую программу с одной кнопкой и действием, и она прекрасно работала, включая интеграцию с Interface Builder (я мог управлять перетаскиванием, чтобы связать действия и выходы).Я также недавно наткнулся на ] серия руководств «Приступая к работе» в блоге, которая показалась весьма полезной для начинающих. Автор, кажется, приложил много усилий к серии "Создание графического интерфейса пользователя какао на Python с помощью PyObjC" (в настоящее время состоит из 6 частей).
Я сколотил глупую программу с одной кнопкой и действием, и она прекрасно работала, включая интеграцию с Interface Builder (я мог управлять перетаскиванием, чтобы связать действия и выходы).Я также недавно наткнулся на ] серия руководств «Приступая к работе» в блоге, которая показалась весьма полезной для начинающих. Автор, кажется, приложил много усилий к серии "Создание графического интерфейса пользователя какао на Python с помощью PyObjC" (в настоящее время состоит из 6 частей).
include dirname(__FILE__) . '/temp-2.php';
$rC = new ReflectionClass('MyFirstClass');
Теперь вы можете узнать, в каком файле он был объявлен и какие методы в нем:
var_dump($rC->getFileName());
var_dump($rC->getMethods());
Что даст вам:
string '/home/squale/developpement/tests/temp/temp-2.php' (length=48)
array
0 => &
object(ReflectionMethod)[2]
public 'name' => string '__construct' (length=11)
public 'class' => string 'MyFirstClass' (length=12)
1 => &
object(ReflectionMethod)[3]
public 'name' => string 'glop' (length=4)
public 'class' => string 'MyFirstClass' (length=12)
А теперь, чтобы получить информацию о каждом методе:
foreach ($rC->getMethods() as $rM) {
var_dump($rM, $rM->getParameters());
echo '-----';
}
Вы получите :
object(ReflectionMethod)[3]
public 'name' => string '__construct' (length=11)
public 'class' => string 'MyFirstClass' (length=12)
array
0 => &
object(ReflectionParameter)[4]
public 'name' => string 'arg1' (length=4)
1 => &
object(ReflectionParameter)[5]
public 'name' => string 'arg2' (length=4)
-----
object(ReflectionMethod)[2]
public 'name' => string 'glop' (length=4)
public 'class' => string 'MyFirstClass' (length=12)
array
0 => &
object(ReflectionParameter)[5]
public 'name' => string 'a' (length=1)
Оттуда вы сможете копать еще немного; и придете к тому, о чем вы впервые спросили; -)
В качестве примечания: есть одна вещь, о которой я понятия не имею: « как найти, какие классы / методы объявлены в данном файле »: - (
Если у кого-то есть идея, приветствую!