|
|
|
Наследование
|
|||
|---|---|---|---|
|
#18+
_fromoracle Зашедший _fromoracleЧей ник ? Софтверного Проктолога. Очень точно определяет описанное "арихитектурко типо Превед" По-русски научись говорить ...... Мну в основном платят за умение софт писать и на аглицком чутка ботать, такшта не парит К тому же, как показывает Ваш пример, умение писать на русском очевидно отняло способность писать вменяемый код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 17:33:16 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
_fromoracleДа кстати для тех кто уже уже посмеялся и сказал "test newinstance = (test)t.getClass().newInstance(); t.setproperties(newinstance.getproperties()); Заменить на test newinstance = new test() test.setproperties(newinstance.getproperties()); И никакой рефлексии Усложним вернее приблизим схему к реальной когда class test { Object properties[] = { "list1" , source.list1() , "list2" , source.list2() , ...... "listn" , source.listn(); }; } Помимо test есть отнаследованные childtest1 ... childtestn. И В каждом из child-ов так инициализируется properties. А далее внутри метода из test необходимо превести указанную процедуру для текущего объекта this. Тут уж new test() не прокатит. Остаётся только test newinstance = (test)this.getClass().newInstance(); this.setproperties(newinstance.getproperties()); Вот честно - я бы любого кандидата, пришедшего на собеседование, за такой код в тесте тут же, сразу и бесповоротно, выгонял бы. Потому что безнадежный случай. В случае, если у нас пропертя именованные (а тут так и есть) надо как минимум использовать типизированный Map. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 17:36:08 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
Зашедший _fromoracle Зашедший _fromoracleЧей ник ? Софтверного Проктолога. Очень точно определяет описанное "арихитектурко типо Превед" По-русски научись говорить ...... Мну в основном платят за умение софт писать и на аглицком чутка ботать, такшта не парит К тому же, как показывает Ваш пример, умение писать на русском очевидно отняло способность писать вменяемый код. "отняло способность писать вменяемый код" - откуда Вввы это взяли ? Вы видели мой реальный код ? На это форуме лишь вопрос и пара сверстаных на коленях примеров. "такшта не парит" Ага а когда в магазин заходите на Jave с продавщицей общаетесь ?... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 17:38:06 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
_fromoracle"отняло способность писать вменяемый код" - откуда Вввы это взяли ? Вы видели мой реальный код ? На это форуме лишь вопрос и пара сверстаных на коленях примеров. Я вижу описанный пример - такого маразма не наблюдал уже очень давно. Можно много чего сверстать на коленке, но такой код - ч0ткий показатель, что у Вас крайне мало опыта в работе на Яве и - более обще - работы с ООП. Возможно, следствие перехода с pl/sql - слишком уж разные идеологии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 17:42:32 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
Зашедший _fromoracleДа кстати для тех кто уже уже посмеялся и сказал "test newinstance = (test)t.getClass().newInstance(); t.setproperties(newinstance.getproperties()); Заменить на test newinstance = new test() test.setproperties(newinstance.getproperties()); И никакой рефлексии Усложним вернее приблизим схему к реальной когда class test { Object properties[] = { "list1" , source.list1() , "list2" , source.list2() , ...... "listn" , source.listn(); }; } Помимо test есть отнаследованные childtest1 ... childtestn. И В каждом из child-ов так инициализируется properties. А далее внутри метода из test необходимо превести указанную процедуру для текущего объекта this. Тут уж new test() не прокатит. Остаётся только test newinstance = (test)this.getClass().newInstance(); this.setproperties(newinstance.getproperties()); Вот честно - я бы любого кандидата, пришедшего на собеседование, за такой код в тесте тут же, сразу и бесповоротно, выгонял бы. Потому что безнадежный случай. В случае, если у нас пропертя именованные (а тут так и есть) надо как минимум использовать типизированный Map. Напишите, пожалуйста, пример с мапом чтобы внутри объявления переменной проинициализировать можно было .... Я может не такой гениальный чего не дочитал ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 17:42:53 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
Зашедший _fromoracle"отняло способность писать вменяемый код" - откуда Вввы это взяли ? Вы видели мой реальный код ? На это форуме лишь вопрос и пара сверстаных на коленях примеров. Я вижу описанный пример - такого маразма не наблюдал уже очень давно. Можно много чего сверстать на коленке, но такой код - ч0ткий показатель, что у Вас крайне мало опыта в работе на Яве и - более обще - работы с ООП. Возможно, следствие перехода с pl/sql - слишком уж разные идеологии. Это лишь показатель малого опыта работы по вашими непосредственным руководством. И не более того. Где вы здесь видите проблемы с ООП ? Обычно наследование пропертей и вообще больше ничего нет.... А если бы вы написали через Map, то как бы переинициализировали ? Тоже не ясно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 17:46:15 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
_fromoracleЯ может не такой гениальный чего не дочитал ... 1. Зачем это инициализировать внутри объявления переменной? Добавить метод init() и вызывать внутри конструктора - не судьба? 2. Зачем хранить данные в массиве Object? Да еще "черезполосицу"?! 3. Что такое "source.list1()"? Вызов метода статического инстанса, вызов статического метода? Какой смысл вообще несет? Почем нельзя сделать метод с параметром ("list(int param)") вместо "тысячи методов", отличающихся только номером? В общем, вопросов сей код вызывает столько, что непонятно, зачем вообще вся эта фигня написана. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 17:47:25 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
Кстати по поводу идеологий. Вы мне обясните в чем маразм подобного хранения данных в Java ? Он внутри Mapa их специально архивирует или что ? Кстати массив я использую исключительно из за того что не нашёл как сделать ченить подобное Map m = new HashMap( list1 => source.newlist1 , list2 => source.newlist2 , ... listn => source.newlistn , ); Приходится для наглядности так выкручиваться а потом уже из такого проинициализированного массива стряпать Map и работать с ним ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 17:50:44 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
Зашедший _fromoracleЯ может не такой гениальный чего не дочитал ... 1. Зачем это инициализировать внутри объявления переменной? Добавить метод init() и вызывать внутри конструктора - не судьба? 2. Зачем хранить данные в массиве Object? Да еще "черезполосицу"?! 3. Что такое "source.list1()"? Вызов метода статического инстанса, вызов статического метода? Какой смысл вообще несет? Почем нельзя сделать метод с параметром ("list(int param)") вместо "тысячи методов", отличающихся только номером? В общем, вопросов сей код вызывает столько, что непонятно, зачем вообще вся эта фигня написана. Эта фигня написана как пример использование рефакторинга. В реальности это не list1 .. listn а реальные имена. и методы тоже совсем совсем разные. Это своего рода конфигурилка начальных значений класса. Так написано для удобства работы и наглядностиююю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 17:52:52 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
_fromoracleПриходится для наглядности так выкручиваться а потом уже из такого проинициализированного массива стряпать Map и работать с ним ... Можно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. По поводу рефлексии. Общеизвестно, что основные ее недостатки - снижение читаемости кода, и более медленное выполнение. Так что говорить что рефлексия помогает сделать код более читаемым в корне не верно, через неделю будешь смотреть на него и мучительно вспоминать что же за гениальную мысль ты реализовывал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 17:59:49 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
_fromoracle Зашедший _fromoracleЯ может не такой гениальный чего не дочитал ... 1. Зачем это инициализировать внутри объявления переменной? Добавить метод init() и вызывать внутри конструктора - не судьба? 2. Зачем хранить данные в массиве Object? Да еще "черезполосицу"?! 3. Что такое "source.list1()"? Вызов метода статического инстанса, вызов статического метода? Какой смысл вообще несет? Почем нельзя сделать метод с параметром ("list(int param)") вместо "тысячи методов", отличающихся только номером? В общем, вопросов сей код вызывает столько, что непонятно, зачем вообще вся эта фигня написана. Эта фигня написана как пример использование рефакторинга. В реальности это не list1 .. listn а реальные имена. и методы тоже совсем совсем разные. Это своего рода конфигурилка начальных значений класса. Так написано для удобства работы и наглядностиююю То есть ЭТО - рефакторинг? А написать: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 18:03:16 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
_fromoracle Но более красиво сделать так: test newinstance = (test)t.getClass().newInstance(); t.setproperties(newinstance.getproperties()); При таком подходе улучшается наглядность кода внутри класса, сразу видно какие переменные чем инициализируются. Учи ООП ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 18:34:11 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
kest_ru _fromoracleПриходится для наглядности так выкручиваться а потом уже из такого проинициализированного массива стряпать Map и работать с ним ... Можно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. По поводу рефлексии. Общеизвестно, что основные ее недостатки - снижение читаемости кода, и более медленное выполнение. Так что говорить что рефлексия помогает сделать код более читаемым в корне не верно, через неделю будешь смотреть на него и мучительно вспоминать что же за гениальную мысль ты реализовывал. Спасибо ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 19:25:07 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
Зашедший _fromoracle Зашедший _fromoracleЯ может не такой гениальный чего не дочитал ... 1. Зачем это инициализировать внутри объявления переменной? Добавить метод init() и вызывать внутри конструктора - не судьба? 2. Зачем хранить данные в массиве Object? Да еще "черезполосицу"?! 3. Что такое "source.list1()"? Вызов метода статического инстанса, вызов статического метода? Какой смысл вообще несет? Почем нельзя сделать метод с параметром ("list(int param)") вместо "тысячи методов", отличающихся только номером? В общем, вопросов сей код вызывает столько, что непонятно, зачем вообще вся эта фигня написана. Эта фигня написана как пример использование рефакторинга. В реальности это не list1 .. listn а реальные имена. и методы тоже совсем совсем разные. Это своего рода конфигурилка начальных значений класса. Так написано для удобства работы и наглядностиююю То есть ЭТО - рефакторинг? А написать: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Я как вы правильно заметили новичок в Java но не в ООП и не в программировании. Так писать бы ни стал по скока конфигурить getProperties().put("list1", source.list1()); getProperties().put("list2", source.list2()); ... getProperties().put("listn", source.listn()); Неудобно ... Короче помоему криво это. Посмотрите скрипты на Perl сразу всё поймете ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 19:27:44 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
Leonidv _fromoracle Но более красиво сделать так: test newinstance = (test)t.getClass().newInstance(); t.setproperties(newinstance.getproperties()); При таком подходе улучшается наглядность кода внутри класса, сразу видно какие переменные чем инициализируются. Учи ООП Я бы поправил не ООП а Java. С ООП вроде порядок ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 19:28:21 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
_fromoracleНарод такой вопрос по джаве. Долго копал может кто подскажет. есть файл test.java: class parent { public String var="parent"; public void printvar() { System.out.println(var); } } class child extends parent { public String var="child"; } class test { public static void main(String[] args) { child c = new child(); c.printvar(); } } Печатает "parent". Как сделать чтобы наследовалось значение поля ? Заранее спасибо ...Смотрел, смотрел, потом понял. У тебя ж метод printvar() выводит значение parent.var, о child.var он даже представления не имеет. Оверрайдить можно методы, а вот можно ли оверрайдить переменные? Походу в child есть 2 var: super.var и просто var. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 20:32:18 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
krjhocrkjh _fromoracleНарод такой вопрос по джаве. Долго копал может кто подскажет. есть файл test.java: class parent { public String var="parent"; public void printvar() { System.out.println(var); } } class child extends parent { public String var="child"; } class test { public static void main(String[] args) { child c = new child(); c.printvar(); } } Печатает "parent". Как сделать чтобы наследовалось значение поля ? Заранее спасибо ...Смотрел, смотрел, потом понял. У тебя ж метод printvar() выводит значение parent.var, о child.var он даже представления не имеет. Оверрайдить можно методы, а вот можно ли оверрайдить переменные? Походу в child есть 2 var: super.var и просто var. оверрайдить переменные в джаве походу нельзя. хотя this.var поидее должен выводить var объекта this. Да поначалу приходилось внутри child делать super.var = this.var; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 20:38:42 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
_fromoracle Я как вы правильно заметили новичок в Java но не в ООП и не в программировании. Так писать бы ни стал по скока конфигурить getProperties().put("list1", source.list1()); getProperties().put("list2", source.list2()); ... getProperties().put("listn", source.listn()); Неудобно ... Короче помоему криво это. Посмотрите скрипты на Perl сразу всё поймете ... Вопрос не в том "скока конфигурить", вопрос в том, насколько легко поддерживать и сможет ли человек через год зайти в код и при необходимости легко поменять данные/процессы, обнаружить максимум ошибок на этапе компиляции (а не вчитываться потом до посинения в портянки стэктрейсов с NPE/ClassCastException). Когда проект делается не для "впарить клиенту и свалить побыстрее", а для того, чтобы как минимум несколько лет его можно было поддерживать и развивать - экономить на булавках смысла не имеет. Не говоря уже о том, что сама идея делать класс, зависящий от сотен и тем более тысяч настроек - крайне кривая арихитектура. В случае, когда много разных настроек и они на всякое влияют - имхо надо смотреть в сторону Command/State/Strategy и разбивать весь этот монолитный функционал с тысячей переменных на стройный и понятный набор небольших, задокументированных, легко тестируемых и поддерживаемых классов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 20:44:04 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
Зашедший _fromoracle Я как вы правильно заметили новичок в Java но не в ООП и не в программировании. Так писать бы ни стал по скока конфигурить getProperties().put("list1", source.list1()); getProperties().put("list2", source.list2()); ... getProperties().put("listn", source.listn()); Неудобно ... Короче помоему криво это. Посмотрите скрипты на Perl сразу всё поймете ... Вопрос не в том "скока конфигурить", вопрос в том, насколько легко поддерживать и сможет ли человек через год зайти в код и при необходимости легко поменять данные/процессы, обнаружить максимум ошибок на этапе компиляции (а не вчитываться потом до посинения в портянки стэктрейсов с NPE/ClassCastException). Когда проект делается не для "впарить клиенту и свалить побыстрее", а для того, чтобы как минимум несколько лет его можно было поддерживать и развивать - экономить на булавках смысла не имеет. Не говоря уже о том, что сама идея делать класс, зависящий от сотен и тем более тысяч настроек - крайне кривая арихитектура. В случае, когда много разных настроек и они на всякое влияют - имхо надо смотреть в сторону Command/State/Strategy и разбивать весь этот монолитный функционал с тысячей переменных на стройный и понятный набор небольших, задокументированных, легко тестируемых и поддерживаемых классов. А чем проблема поддерживать мою структуру ? Кстати при Object[] нивжизнь не наткнётесь на ClassCastException :) По поводу Command/State/Strategy - не знаю что это такое, так что ответить нечего. Не совсем понимаю т.е. для каждого из пропертей свой класс ? Может в этом и есть глубокий смысл, но мне видно не понять зачем ... "впарить клиенту" - да всё уже впарено, вот сижу догоняю как улучшит код. Наверное надо в команду идти уму разуму набираться, сразу стока много нового узнаешь, чего по книжкам никогда не догонишь, а потом через годик когда всё поймешь и станешь гуру задаешь себе вопрос а не**ра это было делать и лезешь в ветку форма "Java мне 35" .... Вот такие дела ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 20:57:18 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
_fromoracleМожно тупо для каждого из полей писать в коде getfield(). Вопрос был в иллегантности решения.А можно хотя бы в школе доучиться, прежде чем на форум с вопросами лезть. Вы ведь наверняка даже в ПТУ не отучились, сразу после 8-го класса армия, механик-водитель танка, да? Потом пару раз упал без парашюта, да? Головой. Я бы поправил не ООП а Java. С ООП вроде порядок ...Ты не то, что ООП, ты грамматику с орфографией не знаешь. Иллегантный. Чтоб тебе только иллегантные после литра виски давали. Тока представь что класс содержит 100 таких варов и таких 50 отнаследованных классов.Фамилии, явки, пароли. Это где так пишут, чтобы от них держаться подальше? Можно тупо для каждого из полей писать в коде getfield(). Вопрос был в иллегантности решения.В любой IDE сейчас есть пункт меню "Generate getters & setters" Тебе даже писать ничего не придется.Типа как PHP есть такая фича как auto_loaders. Типа он автоматически понимает getfield и тупо ручками в код его писать не надо ...Стоп. Зачем тогда тебе жаба? PHP в зубы и педаль до посинения. Стране нужны герои. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 21:00:08 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
krjhocrkjh _fromoracleМожно тупо для каждого из полей писать в коде getfield(). Вопрос был в иллегантности решения.А можно хотя бы в школе доучиться, прежде чем на форум с вопросами лезть. Вы ведь наверняка даже в ПТУ не отучились, сразу после 8-го класса армия, механик-водитель танка, да? Потом пару раз упал без парашюта, да? Головой. Я бы поправил не ООП а Java. С ООП вроде порядок ...Ты не то, что ООП, ты грамматику с орфографией не знаешь. Иллегантный. Чтоб тебе только иллегантные после литра виски давали. Тока представь что класс содержит 100 таких варов и таких 50 отнаследованных классов.Фамилии, явки, пароли. Это где так пишут, чтобы от них держаться подальше? Можно тупо для каждого из полей писать в коде getfield(). Вопрос был в иллегантности решения.В любой IDE сейчас есть пункт меню "Generate getters & setters" Тебе даже писать ничего не придется. Типа как PHP есть такая фича как auto_loaders. Типа он автоматически понимает getfield и тупо ручками в код его писать не надо ...Стоп. Зачем тогда тебе жаба? PHP в зубы и педаль до посинения. Стране нужны герои. Ну что тут скажешь. На этот бред ответить даже нечего просто посылаю на и всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 21:03:47 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
_fromoracle Кстати при Object[] нивжизнь не наткнётесь на ClassCastException :) наивный чукоцкий мальчег ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 21:05:47 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
это клиника. _fromoracle Кстати при Object[] нивжизнь не наткнётесь на ClassCastException :) наивный чукоцкий мальчег все флудеры и бердогенераторы в сад топик можно закрывать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 21:08:11 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
_fromoracleВ том же NetBeans например нету автоматической закачки по FTP не сервер написанного кода.PHP в зубы, там есть скрипты для такой сложной задачи. NetBeans деплоит war-ы на сервер сам. Не знаешь, что такое war-ы? А .ул. ты на форуме вопросы задаешь, не прочитав http://www.sql.ru/forum/actualthread.aspx?tid=227954? и в конструкторе дёргать this.setproperties(); И далее написать t.setproperties();Ничего не понял, кто на ком стоял? Когда сначала дергать t.setproperties, вначале или вконструкторе? Заменить на test newinstance = new test() test.setproperties(newinstance.getproperties()); И никакой рефлексииА зачем вообще там рефлексия? Типа модно? "Эй, чувак, посмотри на меня, делай как я, делай как я!" ? Ы? В общем, вопросов сей код вызывает столько, что непонятно, зачем вообще вся эта фигня написана.За жабу больше платят, чем за похапэ, вот поэтому эта вся фигня и пишется Кстати массив я использую исключительно из за того что не нашёл как сделать ченить подобноеЯ с жабой уже 4 года разбираюсь. Это к тому, что если не нашёл, значит быстро искал. Годика через 3-4 приходи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 21:13:36 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
_fromoracle А чем проблема поддерживать мою структуру ? Кстати при Object[] нивжизнь не наткнётесь на ClassCastException :) По поводу Command/State/Strategy - не знаю что это такое, так что ответить нечего. Не совсем понимаю т.е. для каждого из пропертей свой класс ? Может в этом и есть глубокий смысл, но мне видно не понять зачем ... "впарить клиенту" - да всё уже впарено, вот сижу догоняю как улучшит код. Наверное надо в команду идти уму разуму набираться, сразу стока много нового узнаешь, чего по книжкам никогда не догонишь, а потом через годик когда всё поймешь и станешь гуру задаешь себе вопрос а не**ра это было делать и лезешь в ветку форма "Java мне 35" .... Вот такие дела ... При Object? Запросто, как только вместо String потребуется класть свойство посложнее - тогда, чтобы его в нормальном виде получить, надо будет этот самый Object из массива приводить к энтому классу, а оператор-забивальщик всего этого пис оф крапа случайно забыл добавить наименование три тыщи четыреста десятого пропертя, в итоге индекс съехал на единицу и вместо MyPropertyClass под индексом 3411 в массиве лежит банальный стринг. В итоге - здравствуйте, уважаемые пользователи. Далее, что такое State/Command/Strategy - можно прочитать в любой книжке типа "Объектно-ориентированный дизайн для подготовительной группы детского сада". То, что Вы не знаете таких страшных словей - серьезный показатель. Оно, конечно, шаблоны GoF - не догма, но мозги на место ставят хорошо. Еще очень советую популярное книшко Фаулера "Рефакторинг". Там можно посмотреть описание того, что есть рефакторинг на самом деле, а не выдумывать собственное представление об этом понятии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 21:14:38 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34825929&tid=2144504]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 344ms |
| total: | 488ms |

| 0 / 0 |
