К сожалению я обладаю большим недостатком - я с большим трудом понимаю чужой код. Особенно, если это ООП код. Классы бесконечно наследуются, внутри них вызываются экземпляры других классов. Пока идешь по цепочке передаваемых свойств и доходишь до конца успеваешь забыть что там было в начале и с чего все начиналось! Ну никак не могу удержать все это в голове ((
Есть ли у вас такая проблема?
Народ, как вы выходите из такой ситуации?
Подозреваю, что одним сосредоточением энергии ци (аля буддийские монахи) тут дело не решишь! Вероятно надо рисовать что-то на подобии UML схем и по ним разбираться. Кто нибудь так делает?
А возможно есть какое-то техническо-програмное средство для решения этой проблемы? Какой нибудь анализатор, который отобразит все классы, методы и свойства.
Как еще можно облегчить понимание чужого кода?
Спустя 14 минут, 10 секунд (7.08.2011 - 14:18) jetistyum написал(а):
Попробуй запустить код в дебаггере и отслежтвать все переменные шаг за шагом.
можно попробовать записывать в отдельном текстовом файле (я когда-то так делал) делаешь пометки что представляет собой та или иная переменная, свойство... объект
можно попробовать записывать в отдельном текстовом файле (я когда-то так делал) делаешь пометки что представляет собой та или иная переменная, свойство... объект
Спустя 17 минут, 14 секунд (7.08.2011 - 14:36) gidrosoldat написал(а):
jetistyum, записывать в блокнотик переменные ИМХО каменный век ))
Неужели нету способа получше?
Раньше записывал, а как теперь делаешь?
Неужели нету способа получше?
Раньше записывал, а как теперь делаешь?
Спустя 1 минута, 2 секунды (7.08.2011 - 14:37) VolDroN написал(а):
phpDesigner, поможет узнать все возможные методы у объекта + аргументы которые надо передавать (ещё, вроде, небольшое описание класса от которого этот метод получен (при наследовании))
Спустя 16 минут, 32 секунды (7.08.2011 - 14:53) MNO121280 написал(а):
Есть книга Зандстра М. PHP. Объекты, шаблоны и методики программирования. (2010 год). Там на 129 странице объясняется как все это делать с помощью UML.
Спустя 25 минут, 55 секунд (7.08.2011 - 15:19) gidrosoldat написал(а):
MNO121280, спасибо я читал эту книгу.
Но я не хочу все это делать ручками - гораздо приятнее если программа сама прокрутит файлы проекта и нарисует такую схему.
Я использую Netbeans 7.0, в нем есть Code navigator, который в табличке показывает методы и свойства класса - увы только те что есть в файле. Полной картины по одному файлу не увидишь.
Хмм, как инструмент анализа классом можно использовать Reflection class, но им я еще не пользовался. Может кто уже пробовал? Подойдет ли он для решения моей задачи?
Спустя 1 минута, 7 секунд gidrosoldat написал(а):
VolDroN, он по всей цепочке наследуемых классов пробегается или только по текущему файлу смотрит?
Но я не хочу все это делать ручками - гораздо приятнее если программа сама прокрутит файлы проекта и нарисует такую схему.
Я использую Netbeans 7.0, в нем есть Code navigator, который в табличке показывает методы и свойства класса - увы только те что есть в файле. Полной картины по одному файлу не увидишь.
Хмм, как инструмент анализа классом можно использовать Reflection class, но им я еще не пользовался. Может кто уже пробовал? Подойдет ли он для решения моей задачи?
Спустя 1 минута, 7 секунд gidrosoldat написал(а):
VolDroN, он по всей цепочке наследуемых классов пробегается или только по текущему файлу смотрит?
Спустя 3 минуты, 42 секунды (7.08.2011 - 15:23) VolDroN написал(а):
gidrosoldat он бегает по всем файлам которые ты добавил в проект (в проект надо добавить только папку сайта, так же можно указать где находятся библиотеки (хотя работает и без этого, это нужно только для удобной навигации по самому проекту)).
Спустя 6 минут, 36 секунд (7.08.2011 - 15:29) gidrosoldat написал(а):
VolDroN, попробую ) Напиши какая это опция и где ее искать.
Спустя 7 минут, 53 секунды (7.08.2011 - 15:37) VolDroN написал(а):
Это редактор, видел давно, но только недавно установил. Очень удобная вещь.
когда пишешь например $obj-> через ~секунду появляется окошко, с возможными методами для этого объекта. (когда начинаешь писать метод то в том же окошке указываются все возможные аргументы, их названия и варианты по умолчанию (если есть)). То же самое с переменными, когда пишешь $, появляется окно со всеми определёнными переменными.
Тоже самое и с константами
.
вообщем функций там много, в том числе деббагер и запуск скрипта из редактора.
Подсветка многих языков.
У встроенных функций, при нажатии на пкм есть пункт что то типо "посмотреть в документации", при нажатии открывается локальная документация (как на php.net) с описанем функциии, правда на английском.
upd: кстати, есть автоподстановка xhtml тегов, и почти такой же функционал (как при написании php кода) вывод всех возможных функций в javascript.
когда пишешь например $obj-> через ~секунду появляется окошко, с возможными методами для этого объекта. (когда начинаешь писать метод то в том же окошке указываются все возможные аргументы, их названия и варианты по умолчанию (если есть)). То же самое с переменными, когда пишешь $, появляется окно со всеми определёнными переменными.
Тоже самое и с константами

вообщем функций там много, в том числе деббагер и запуск скрипта из редактора.
Подсветка многих языков.
У встроенных функций, при нажатии на пкм есть пункт что то типо "посмотреть в документации", при нажатии открывается локальная документация (как на php.net) с описанем функциии, правда на английском.
upd: кстати, есть автоподстановка xhtml тегов, и почти такой же функционал (как при написании php кода) вывод всех возможных функций в javascript.
Спустя 10 минут, 16 секунд (7.08.2011 - 15:47) gidrosoldat написал(а):
VolDroN, что-то похожее в Netbeans есть. Но работает не стабильно! То выдает список, а то молчит как партизан )
Спустя 3 минуты, 5 секунд (7.08.2011 - 15:51) VolDroN написал(а):
gidrosoldat мм.. первый раз слышу.
Замечал такое, но очень редко
Замечал такое, но очень редко

Спустя 3 минуты, 47 секунд (7.08.2011 - 15:54) Invis1ble написал(а):
gidrosoldat
в NetBeans все работает, ты проект создаешь?
в NetBeans все работает, ты проект создаешь?
Цитата |
То выдает список, а то молчит как партизан |
Ctrl+Space пробуй
Спустя 5 минут, 5 секунд (7.08.2011 - 15:59) VolDroN написал(а):
всё таки netbeans в два раза толще чем phpdesigner. Большой минус.
Хотя надо посмотреть функционал
Хотя надо посмотреть функционал
Спустя 10 минут, 26 секунд (7.08.2011 - 16:10) gidrosoldat написал(а):
Invis1ble, а то. Конечно создаю. Попробую Ctrl+Space и отпишусь.
Кстати, поискал в тырнете, нашел специальный инструмент для анализа кода и генерации UML схем. По описанию можно и обратный процесс проводить!
Называется сие чудо: Sparx Systems Enterprise Architect
Сцылка: http://rutracker.org/forum/viewtopic.php?t=2161585
Там на пункт с плюсиком жмите "Overview по мотивам официального сайта программы (RU)".
Кстати, поискал в тырнете, нашел специальный инструмент для анализа кода и генерации UML схем. По описанию можно и обратный процесс проводить!
Называется сие чудо: Sparx Systems Enterprise Architect
Сцылка: http://rutracker.org/forum/viewtopic.php?t=2161585
Там на пункт с плюсиком жмите "Overview по мотивам официального сайта программы (RU)".
Спустя 4 минуты, 34 секунды (7.08.2011 - 16:14) Invis1ble написал(а):
gidrosoldat
Цитата |
Называется сие чудо: Sparx Systems Enterprise Architect Сцылка: http://rutracker.org/forum/viewtopic.php?t=2161585 |
возьму на заметку
Спустя 3 часа, 18 минут, 50 секунд (7.08.2011 - 19:33) Гость_lekafe написал(а):
Пишу на NB все нормально, подсвечивает нормально, но жаль что может читать только явно подключенные файлы.
Спустя 24 минуты, 7 секунд (7.08.2011 - 19:57) jetistyum написал(а):
стоп, если говорить о подсветке, то большинство нормальных IDE подсветят и методы и предполагаемые параметры вызова, но вопрос встал в том, чтобы разобраться как что работает
даже если метод принимает в параметрах какой-то объект класс N , ты не представляешь какие свойства у текущего объекта N, так вот для этого либо дебаггер с остановкой (сейчас) или блокнот
*(давно когда-то, помогало разобраться )
даже если метод принимает в параметрах какой-то объект класс N , ты не представляешь какие свойства у текущего объекта N, так вот для этого либо дебаггер с остановкой (сейчас) или блокнот

Спустя 50 минут, 15 секунд (7.08.2011 - 20:48) Guest написал(а):
Цитата (Гость_lekafe @ 7.08.2011 - 16:33) |
подсвечивает нормально, но жаль что может читать только явно подключенные файлы. |
А если классы автолоэйдом подгружаются, NB не покажет?
jetistyum, блокнотик будет планом Б ))
Спустя 7 минут, 29 секунд (7.08.2011 - 20:55) Invis1ble написал(а):
Цитата |
А если классы автолоэйдом подгружаются, NB не покажет |
нет

Спустя 32 минуты, 21 секунда (7.08.2011 - 21:27) VolDroN написал(а):
у phpdesigner с этим всё нормально.
Спустя 3 минуты, 2 секунды (7.08.2011 - 21:30) Invis1ble написал(а):
VolDroN
Цитата |
у phpdesigner с этим всё нормально |
неужели? чесно говоря, сильно в этом сомневаюсь.....
Спустя 15 минут, 15 секунд (7.08.2011 - 21:46) VolDroN написал(а):
У самого прописан в конфиге __autoload.
п.с. хотя нет, он вроде просто по всем файлам в проекте бегает. т.к. даже с удалённой явно прописанной папкой библиотек, с закомментированым autoload он всё равно видит все методы..
п.с. хотя нет, он вроде просто по всем файлам в проекте бегает. т.к. даже с удалённой явно прописанной папкой библиотек, с закомментированым autoload он всё равно видит все методы..
Спустя 9 часов, 50 минут, 40 секунд (8.08.2011 - 07:36) linker написал(а):
phpDesigner очень мощная вещь, NetBeans просто отдыхает как по скорости работы, так и по удобству. Минусы нетбинса, заметно снижающие скорость написания кода:
1. Медленно работает, может очень долго (секунда две) сидеть и думать как подсветить то или иное слово, переменную.
2. Долго грузится.
3. Долго отдаёт автоподсказки по коду.
4. Не имеет возможности нормально работать с файлами не включенными в проект, или не открытыми.
5. Кривое понимание "библиотеки" проекта (тут оно называется Include files), в результате отдельный фреймворк приходится заносить в отдельный проект и группировать его с текущим.
6. Любое файло вне проекта (даже include files внутри проекта) он почему-то упорно не хочет сохранять в UTF-8 кодировке.
7.
8.
...
много всего в том числе дебильная служебная папка создаваемая в корне проекта, если ей указывать другой каталог, то будут проблемы с svn.
Единственный плюс - NetBeans бесплатный.
1. Медленно работает, может очень долго (секунда две) сидеть и думать как подсветить то или иное слово, переменную.
2. Долго грузится.
3. Долго отдаёт автоподсказки по коду.
4. Не имеет возможности нормально работать с файлами не включенными в проект, или не открытыми.
5. Кривое понимание "библиотеки" проекта (тут оно называется Include files), в результате отдельный фреймворк приходится заносить в отдельный проект и группировать его с текущим.
6. Любое файло вне проекта (даже include files внутри проекта) он почему-то упорно не хочет сохранять в UTF-8 кодировке.
7.
8.
...
много всего в том числе дебильная служебная папка создаваемая в корне проекта, если ей указывать другой каталог, то будут проблемы с svn.
Единственный плюс - NetBeans бесплатный.
Спустя 2 часа, 36 минут, 45 секунд (8.08.2011 - 10:13) gidrosoldat написал(а):
Ну что могу сказать? Год назад пробовал phpDesigner, впечатления были средненькие. Сегодня пересев с Netbeans на phpDesigner чувствуется разница - действительно быстрее, удобнее и все под рукой. В ООП видит методы подключенные через autoload. Даже слишком много методов вываливает (в том числе и системные __методы). Интересно приватные тоже покажет или скроет?
Заметил один минус - ставя курсор на переменную он ее в других строках не подсвечивает. Либо тут настроить хайлайт надо (может кто подскажет как?), либо недаработка разрабов.
Заметил один минус - ставя курсор на переменную он ее в других строках не подсвечивает. Либо тут настроить хайлайт надо (может кто подскажет как?), либо недаработка разрабов.
Спустя 19 минут, 31 секунда (8.08.2011 - 10:33) KonstantinK написал(а):
Я не раз читал как хвалят PhpDesigner7 я пару раз пытался пересесть на него и вот чего мне не хватает в нем по сравнению с NB : NB когда наводишь на константу определенную в проекте c нажатым Ctrl то выводит значение константы, а PD7 может тока перебросить в файл где она определена, тоже касается и функций и классов и их методов , NB выводит где расположены функция, метод, класс и выдает PHP-doc метода, класса , функции(если они есть, я обычно пишу) что очень удобно. Может конечно дело в том что я не разобрался в PD7 , дайте тогда где почитать про его настройки и горячие клавиши.
Спустя 1 час, 29 минут, 19 секунд (8.08.2011 - 12:02) linker написал(а):
Да phpDesigner при клике на переменную, константу, метод, функцию либо перебрасывает в место определения, либо открывает окно с файлами, где встречаются оные. Этого NB делать вообще не умеет. Причём, если есть строка include "file.php"; и кликнув на file.php, то этот файл откроется для редактирования. phpDesigner вообще очень умно разруливает подобные клики и помогает добраться до тех файлов и строк кода, до которых в NB замучаешься доползать. Я не вижу смысла подсвечивать переменные под курсором, ибо в phpDesigner'е очень мощная система автоподстановок и подсказок. Плюс, просто афигенные возможности по phpDocumenter. Поставив курсор на название класса или функции или метода и нажав ctrl+alt+c или ctrl+alt+d можно очень быстро документировать свой код, NB тут просто отдыхает, в котором нужно всё делать вручную, а его система хот-кеев работает из рук вон плохо. Плюс ещё куча мега полезные фич: шаблонирование сырцов, по-моему самое наибыстрейшее создание новых файлов по клику по табам открытых файлов и куча-куча много ещё всего.
Спустя 23 минуты, 9 секунд (8.08.2011 - 12:25) Гость_lekafe написал(а):
linker если программист знает свой код и с которым он манипулирует, редактор роли практические не играет, как и в моем случае, я могу писать хоть в комоде иде, хоть в нетбинсе, хоть в простом текстовом редакторе. Что по документированию, то там очень хорошая система, ты просто наверно не знаешь как она работает.
Спустя 17 минут (8.08.2011 - 12:42) gidrosoldat написал(а):
Цитата (linker @ 8.08.2011 - 09:02) |
Я не вижу смысла подсвечивать переменные под курсором, ибо в phpDesigner'е очень мощная система автоподстановок и подсказок. |
А я вижу - одним кликом вижу все места где используется переменная. Есть ли в PHP Designer что либо похожее?
Да, и можно ли Code explorer и Project по разным мини окошкам развести? Чтобы Project с файлами был слева от основного окна, а Code explorer справа.
Спустя 12 минут, 43 секунды (8.08.2011 - 12:55) jetistyum написал(а):
в Eclipse PDT можно подключить библиотеку, с которой ты работаешь и он будет подсвечивать все явно определенные объекты этих классов.
тоесть если $a = new Aclass
$a->(тут будет показан список свойств методов и свойств)
так же если описать метод с помощью phpDoc
/**
@param AClass $a object a
@param CClass $c object c
@return DClass
*/
public function b ($a, $c){
...
return $d
}
так же после вызова и принятия параметра работы этого метода будет установлен тип объекта - DClass и будет так же подсвечивать его методы и св-ва
тоесть если $a = new Aclass
$a->(тут будет показан список свойств методов и свойств)
так же если описать метод с помощью phpDoc
/**
@param AClass $a object a
@param CClass $c object c
@return DClass
*/
public function b ($a, $c){
...
return $d
}
так же после вызова и принятия параметра работы этого метода будет установлен тип объекта - DClass и будет так же подсвечивать его методы и св-ва
Спустя 27 минут, 41 секунда (8.08.2011 - 13:23) linker написал(а):
Гость_lekafe
Ошибаешься, когда проект представляет из себя сотни скриптов и немалые десятки тысяч строк кода, то выбор IDE имеет просто огромнейшее значение. Да и рисуя даже один скрипт куда приятнее когда редактор позволяет сделать это быстрее и удобнее. Похвальбы: "Я рисую всё в нотепаде", - давно канули в лета, сейчас это минус для разработчика.
gidrosoldat
Ты видишь только пределах того участка кода, где находится у тебя курсор, вся остальная картина для тебя скрыта. В приделах одной функции/метода надобность в такой фишке отпадает, ибо в хорошем стиле любая функция/метод должны умещаться в области видимости без прокруток. А phpDesigner автоматически подсказывает, какие переменные используются в контексте редактируемой функции/метода, даже если её границы выходят за область видимости и это действительно полезно.
Рабочая среда с окошечками и рюшечками полностью настраивается так, как тебе удобно.
Ошибаешься, когда проект представляет из себя сотни скриптов и немалые десятки тысяч строк кода, то выбор IDE имеет просто огромнейшее значение. Да и рисуя даже один скрипт куда приятнее когда редактор позволяет сделать это быстрее и удобнее. Похвальбы: "Я рисую всё в нотепаде", - давно канули в лета, сейчас это минус для разработчика.
gidrosoldat
Ты видишь только пределах того участка кода, где находится у тебя курсор, вся остальная картина для тебя скрыта. В приделах одной функции/метода надобность в такой фишке отпадает, ибо в хорошем стиле любая функция/метод должны умещаться в области видимости без прокруток. А phpDesigner автоматически подсказывает, какие переменные используются в контексте редактируемой функции/метода, даже если её границы выходят за область видимости и это действительно полезно.
Рабочая среда с окошечками и рюшечками полностью настраивается так, как тебе удобно.
Спустя 3 часа, 18 минут, 32 секунды (8.08.2011 - 16:41) gidrosoldat написал(а):
linker, просто это была приятаная мелочь, которой в PHP Designer нету. Нету и нету, не будем начинать холивар ))
Кстати по теме - то бишь о расшифровке запутанного PHP кода... Я тут покопался с программами UML моделирования - оказалось что некоторые из них берут PHP ООП код и визуализируют его в виде UML диаграммы. Вот пример работы Visual Paradigm (контроллер регистрации в Kohana).
Попробовал ради смеха прогнать все ядро Kohana через программу - получилось )) Схема получилась не маленькая - 20к х 9к пикселей (~6.3мб).
Не знаю поможет ли такие схемы в понимании чужого кода, но впринципе общий вид программы дают сразу же.
Кстати по теме - то бишь о расшифровке запутанного PHP кода... Я тут покопался с программами UML моделирования - оказалось что некоторые из них берут PHP ООП код и визуализируют его в виде UML диаграммы. Вот пример работы Visual Paradigm (контроллер регистрации в Kohana).
Попробовал ради смеха прогнать все ядро Kohana через программу - получилось )) Схема получилась не маленькая - 20к х 9к пикселей (~6.3мб).
Не знаю поможет ли такие схемы в понимании чужого кода, но впринципе общий вид программы дают сразу же.
Спустя 16 минут, 32 секунды (8.08.2011 - 16:58) linker написал(а):
Мелочь, от которой есть 1% толка, сомнительная полезность. Щеголять НетБинсу ей не стоит.
Спустя 23 часа, 41 минута, 56 секунд (9.08.2011 - 16:40) ADiel написал(а):
Цитата (linker @ 8.08.2011 - 04:36) |
4. Не имеет возможности нормально работать с файлами не включенными в проект, или не открытыми. |
Работаю с YII framework. Заходишь в свойства проекта, правишь include path и все. По autoload нормально индексирует код. Все подсвечивается и отображается очень быстро (на ноуте), на слабеньких компах естественно торомзит.
Как найдете искуственный интеллект с libastral.so, сообщите
Спустя 2 минуты, 49 секунд (9.08.2011 - 16:42) linker написал(а):
ADiel
На четырехядерном с 4 гигами оперативы тормозит нещадно, хотя может меня phpDesigner так развратил своей скоростью работы.
На четырехядерном с 4 гигами оперативы тормозит нещадно, хотя может меня phpDesigner так развратил своей скоростью работы.
Спустя 4 дня, 19 часов, 9 минут, 48 секунд (14.08.2011 - 11:52) Гость_Greg1978 написал(а):
phpStorm проблемы NB решает на раз.
А вот то что phpDesigner не может толком с расстановкой работать с phpUnit и JS тестовыми фреймворками, не может дебажить отдельно JS код и работать с Silenium это факт. И это жирный минус в его сторону. Этот минус реально перетягивает на сторону более продвинутых IDE (хоть и с немногим большей задержкой по времени). Разработка с тестами это всё для любых проектов, а этого к сожалению нет в PD.
linker
>На четырехядерном с 4 гигами оперативы тормозит нещадно, хотя может меня phpDesigner так развратил своей скоростью работы.
Не а
исключительно, и это при всём том что проект в 100 Мб проиндексирован и любые изменения в коде одного скрипта отражает ошибки (phpStorm) в других автоматически. У меня стоит на ноуте (x4 OS x64 4Гб) и на компутере (XP x32 Core Duo E5300 2.66 , 4 Гб).
Смотри может что то конфликтует? NB на тех же компах просто летает. А по поводу служебной папки так её можно в любой каталог определять, не обязательно в корень сайта.
А вот то что phpDesigner не может толком с расстановкой работать с phpUnit и JS тестовыми фреймворками, не может дебажить отдельно JS код и работать с Silenium это факт. И это жирный минус в его сторону. Этот минус реально перетягивает на сторону более продвинутых IDE (хоть и с немногим большей задержкой по времени). Разработка с тестами это всё для любых проектов, а этого к сожалению нет в PD.
linker
>На четырехядерном с 4 гигами оперативы тормозит нещадно, хотя может меня phpDesigner так развратил своей скоростью работы.
Не а

Смотри может что то конфликтует? NB на тех же компах просто летает. А по поводу служебной папки так её можно в любой каталог определять, не обязательно в корень сайта.