Почему ваш код – отстой
От: Аноним  
Дата: 20.06.06 02:44
Оценка: 666 (31) +7 -17
Статья:
Dave Astels. Почему ваш код – отстой
Автор(ы): Дейв Эстелс (Dave Astels)
Дата: 13.06.2006
Если Вы программируете как большинство, и даже, вероятно, все программисты (скромненько включая автора этой статьи), то ваш код – отстой. Возможно, не целиком; возможно, не всегда, но наверняка какая-то его часть и в какой-то момент времени.


Авторы:
moudrick

Аннотация:
Если Вы программируете как большинство, и даже, вероятно, все программисты (скромненько включая автора этой статьи), то ваш код — отстой. Возможно, не целиком; возможно, не всегда, но наверняка какая-то его часть и в какой-то момент времени.
Re: Почему ваш код – отстой
От: Трурль  
Дата: 20.06.06 05:21
Оценка: 86 (5) +9 -2 :))) :))) :))) :))) :))) :))) :)))
Тема не раскрыта. Не объясняется, почему же ваш код – отстой.
Было бы мило, если бы автор закончил в духе "Ваш код – отстой, потому что вы все — ..."
Re: Почему ваш код – отстой
От: Вадим Никулин Россия Здесь
Дата: 20.06.06 05:24
Оценка: +1
Здравствуйте, Владислав Сивяков, Алексей Мудрик (перевод), Вы писали:

ВСА>Статья:

ВСА>Dave Astels. Почему ваш код – отстой
Автор(ы): Дейв Эстелс (Dave Astels)
Дата: 13.06.2006
Если Вы программируете как большинство, и даже, вероятно, все программисты (скромненько включая автора этой статьи), то ваш код – отстой. Возможно, не целиком; возможно, не всегда, но наверняка какая-то его часть и в какой-то момент времени.


ВСА>Авторы:

ВСА>Владислав Сивяков, Алексей Мудрик (перевод)

ВСА>Аннотация:

ВСА>Если Вы программируете как большинство, и даже, вероятно, все программисты (скромненько включая автора этой статьи), то ваш код — отстой. Возможно, не целиком; возможно, не всегда, но наверняка какая-то его часть и в какой-то момент времени.

Интересная статья. Однако предпочитаю догматично следовать господам Саттеру и Александреску, которые утверждают что public-поля могут иметь только классы "без поведения". У них достаточно подробно расписано, почему лучше делать так. В частности, для целей отладки/тестирования и соблюдения инвариантов.
Re: Почему ваш код – отстой
От: Laughing_Silencer  
Дата: 20.06.06 06:27
Оценка: 7 (2) +4 -4
Здравствуйте, Владислав Сивяков, Алексей Мудрик (перевод), Вы писали:

ВСА>Статья:

ВСА>Dave Astels. Почему ваш код – отстой
Автор(ы): Дейв Эстелс (Dave Astels)
Дата: 13.06.2006
Если Вы программируете как большинство, и даже, вероятно, все программисты (скромненько включая автора этой статьи), то ваш код – отстой. Возможно, не целиком; возможно, не всегда, но наверняка какая-то его часть и в какой-то момент времени.


ВСА>Авторы:

ВСА>Владислав Сивяков, Алексей Мудрик (перевод)

ВСА>Аннотация:

ВСА>Если Вы программируете как большинство, и даже, вероятно, все программисты (скромненько включая автора этой статьи), то ваш код — отстой. Возможно, не целиком; возможно, не всегда, но наверняка какая-то его часть и в какой-то момент времени.

Набор слов без пояснения, доказательств, выводов... Цена такой статье = 0.
Re: Почему ваш код – отстой
От: S-SH Россия http://shmakov.ru/
Дата: 20.06.06 06:35
Оценка:
ВСА>Dave Astels. Почему ваш код – отстой
Автор(ы): Дейв Эстелс (Dave Astels)
Дата: 13.06.2006
Если Вы программируете как большинство, и даже, вероятно, все программисты (скромненько включая автора этой статьи), то ваш код – отстой. Возможно, не целиком; возможно, не всегда, но наверняка какая-то его часть и в какой-то момент времени.

ВСА>Если Вы программируете как большинство, и даже, вероятно, все программисты (скромненько включая автора этой статьи), то ваш код — отстой. Возможно, не целиком; возможно, не всегда, но наверняка какая-то его часть и в какой-то момент времени.

Согласен, мой код — отстой, согласно определениям статьи. И что дальше?
IMHO. смайлики добавить по вкусу.
Re[2]: Почему ваш код – отстой
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 20.06.06 06:48
Оценка: :)
Здравствуйте, S-SH, Вы писали:

SS>Согласен, мой код — отстой, согласно определениям статьи. И что дальше?


Дочитать статью до конца? Ответ в разделе "Итог".
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re: Почему ваш код – отстой
От: Вумудщзук Беларусь  
Дата: 20.06.06 06:56
Оценка: 1 (1) +3 -1 :)
>Если Вы программируете как большинство, и даже, вероятно, все программисты (скромненько включая автора этой статьи), то ваш код — отстой. Возможно, не целиком; возможно, не всегда, но наверняка какая-то его часть и в какой-то момент времени.
про статью можно сказать цитатой из неё же самой: "этот код — отстой"
Homo sum et nihil humani a me alienum puto...
Re: Как спроектировать для автомат. тестирования?
От: Constructor  
Дата: 20.06.06 07:19
Оценка:
Здравствуйте,
А кто-нибудь подскажет, как писать код, приспособленный для автоматического тестирования. У меня нет автоматических тестов (соответственно, все, что я понаписал -... ). Тем не менее, наверняка, этот вопрос уже хорошо проработан и есть методические рекомендации с примерами?
Re[2]: Как спроектировать для автомат. тестирования?
От: moudrick Россия http://community.moudrick.net/
Дата: 20.06.06 08:47
Оценка: 6 (1)
Здравствуйте, Constructor, Вы писали:

C>Здравствуйте,

C>А кто-нибудь подскажет, как писать код, приспособленный для автоматического тестирования. У меня нет автоматических тестов (соответственно, все, что я понаписал -... ). Тем не менее, наверняка, этот вопрос уже хорошо проработан и есть методические рекомендации с примерами?

Если начинаешь с нуля проект, либо какую-то его мало-мальски независимую часть, то все просто.

TDD

Test Driven Development. Можно посмотреть здесь, ищи также треду на RSND по этому ключевому слову.

Разработка через тестирование. Ищи на Google.




Одноименный основополагающий труд Кент Бек на эту тему — здесь. Тиражы на рынках, в магазинах и инет магазинах закончились ((. А мне надо. В том числе как раздаточный материал для начинающих, ибо расскзать это невозможно (показать можно — если практикуется парное программирование). Это небывалая книга по соотношению "объем — время прочтения". Короткие и точные формулировки, проверенные практикой, воспринимаются с трудом, но когда становятся частью мировоззрения, удивляешься — почему это могло быть непонятно... Там описан сам процесс TDD, отдельные ситуации, возникающие в практике (паттерны) с их разбором. А также пошаговое описание создания framework-а для автоматического тестирования на (ОО) языке, который автор изучал в процессе написания этого фреймворка. К вопросу о самоприменимости и о том, что было раньше — яйцо или курица...
Re: Почему ваш код – отстой
От: FDSC Россия consp11.github.io блог
Дата: 20.06.06 09:36
Оценка: 30 (3) +4 :))) :)
Здравствуйте, Владислав Сивяков, Алексей Мудрик (перевод), Вы писали:

ВСА>Статья:

ВСА>Dave Astels. Почему ваш код – отстой
Автор(ы): Дейв Эстелс (Dave Astels)
Дата: 13.06.2006
Если Вы программируете как большинство, и даже, вероятно, все программисты (скромненько включая автора этой статьи), то ваш код – отстой. Возможно, не целиком; возможно, не всегда, но наверняка какая-то его часть и в какой-то момент времени.


ВСА>Авторы:

ВСА>Владислав Сивяков, Алексей Мудрик (перевод)

ВСА>Аннотация:

ВСА>Если Вы программируете как большинство, и даже, вероятно, все программисты (скромненько включая автора этой статьи), то ваш код — отстой. Возможно, не целиком; возможно, не всегда, но наверняка какая-то его часть и в какой-то момент времени.

Медузы, — сказала она горько. — Скользкие глупые медузы. Копошатся, ползают, стреляют, сами не знают чего хотят, ничего не умеют, ничего по-настоящему не любят... как черви в сортире...
...Сегодня уже все знают, что есть человек. Что с человеком делать — вот вопрос. Да и то, признаться, уже навяз на зубах
(братья Стругацкие)

Переформулируя можно сказать — мы все уже давно знаем, что наш код — отстой. Вот что с этим кодом делать — вот вопрос. Да и то, признаться, уже навяз на зубах
Re[3]: Как спроектировать для автомат. тестирования?
От: Constructor  
Дата: 20.06.06 09:41
Оценка:
Здравствуйте, moudrick, Вы писали:

Спасибо!

M>Одноименный основополагающий труд Кент Бек на эту тему — здесь. Тиражы на рынках, в магазинах и инет магазинах закончились ((. А мне надо.


Блин, а я много раз проходил мимо этой книги, когда она еще лежала на полках, и даже не брал в руки. Т.к., первая появившаяся книжка Бека "экстремальное программирования" восторга не вызвала. Не думал я, что разработка через тестирование окажется нормальной технологией. Думал это из разряда "программирование парами".
Re[4]: Как спроектировать для автомат. тестирования?
От: fmiracle  
Дата: 20.06.06 10:46
Оценка: 3 (1)
Здравствуйте, Constructor, Вы писали:

C>Блин, а я много раз проходил мимо этой книги, когда она еще лежала на полках, и даже не брал в руки. Т.к., первая появившаяся книжка Бека "экстремальное программирования" восторга не вызвала. Не думал я, что разработка через тестирование окажется нормальной технологией. Думал это из разряда "программирование парами".


Не расстраивайтесь.
Многие считают, что программирование парами — это очень полезно. Может вам и разработка через тестирование тоже не понравится
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Почему ваш код – отстой
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 20.06.06 13:44
Оценка: :))
Здравствуйте, Владислав Сивяков, Алексей Мудрик (перевод), Вы писали:

ВСА>Статья:

ВСА>Dave Astels. Почему ваш код – отстой
Автор(ы): Дейв Эстелс (Dave Astels)
Дата: 13.06.2006
Если Вы программируете как большинство, и даже, вероятно, все программисты (скромненько включая автора этой статьи), то ваш код – отстой. Возможно, не целиком; возможно, не всегда, но наверняка какая-то его часть и в какой-то момент времени.


Потому что "Всё на свете — Г.... Все, кроме мочи, потому что моча — это отдельная субстанция"
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[2]: Почему ваш код – отстой
От: moudrick Россия http://community.moudrick.net/
Дата: 20.06.06 13:53
Оценка: 1 (1) +1
ВН>Интересная статья. Однако предпочитаю догматично следовать господам Саттеру и Александреску, которые утверждают что public-поля могут иметь только классы "без поведения". У них достаточно подробно расписано, почему лучше делать так. В частности, для целей отладки/тестирования и соблюдения инвариантов.

Господа, ну что вы прям как дети, извините...

Как только public/protected (or other non-private) поле
становится непрозрачным для чтения и/или записи,
мы немедленно применяем рефакторинг Encapsulate Field

В любой мало-мальски приличной среде программирования для любого мало-мальски приличного ОО языка имеются средства сделать это немедленно в одно движение.

Непрозначное для чтения-записи — это значит, что для считывания/записи значения свойства требуется нетривиальная логика, отличная от простого сохранения-считывания private-поля.

Если свойство прозрачно для чтения-записи, реализация его public полем не окажит никакого влияния на отладку/тестирование и соблюдение инвариантов.
(Если конечно соближение инвариантов не требует нетривиальной логики чтения-записи).

Если мы видим public поле, это сигнал — на текущий момент использование свойства, представляемого этим полем — тривиально.
Re[2]: Как спроектировать для автомат. тестирования?
От: moudrick Россия http://community.moudrick.net/
Дата: 20.06.06 15:05
Оценка:
Здравствуйте, Constructor, Вы писали:

C>Здравствуйте,

C>А кто-нибудь подскажет, как писать код, приспособленный для автоматического тестирования. У меня нет автоматических тестов (соответственно, все, что я понаписал -... ). Тем не менее, наверняка, этот вопрос уже хорошо проработан и есть методические рекомендации с примерами?

С разрешрения участников процитирую небольшой IM-диалог, который может прояснить ситуацию при недопонимании..

6/20/2006 3:11:39 PM Ozzy wrote:
мне вот только не понятно как сделать код поддающийся тестированию? Что имелось ввиду?
6/20/2006 3:13:01 PM moudrick wrote:
писать его так, чтобы основной функционал можно было вызывать не только из прикрученного интрерфейса, но и из тестового framework-а.
6/20/2006 3:13:20 PM moudrick wrote:
причем так, чтобы из тестового фреймворка можно было проверить результат...
6/20/2006 3:32:26 PM Ozzy wrote:
в общем каждый модуль типа должен быть независим и выдавать нужный результат на необходимые тесты
6/20/2006 3:32:38 PM moudrick wrote:
да
6/20/2006 3:32:44 PM moudrick wrote:
точно сказал.

Re[2]: Почему ваш код – отстой
От: DJ KARIES Россия  
Дата: 20.06.06 15:52
Оценка: +1
Здравствуйте, Трурль, Вы писали:

Т>Тема не раскрыта. Не объясняется, почему же ваш код – отстой.

Т>Было бы мило, если бы автор закончил в духе "Ваш код – отстой, потому что вы все — ..."
Так не интересно, любой дурак такое напишет. Автор интеллигентно намекает, давая ясно понять, что вокруг одни 1_3.14здяи.
http://dkdens.narod.ru 3D-город на Delphi в исходниках.
Re[2]: Почему ваш код – отстой
От: anvaka Украина Yasiv
Дата: 20.06.06 18:22
Оценка: 1 (1) +2
Здравствуйте, FDSC, Вы писали:

FDS>[..] Вот что с этим кодом делать — вот вопрос. [..]


Вопрос риторический ?
Я извиняюсь, что лезу с банальным ответом. Предлагаю не панацею, но хорошее средство: Совершенный код
Автор(ы): Стив Макконнелл

Опираясь на академические исследования, с одной стороны, и практический
опыт коммерческих разработок ПО — с другой, автор синтезировал из самых
эффективных методик и наиболее эффективных принципов ясное прагматичное
руководство. Каков бы ни был ваш профессиональный уровень, с какими бы
средствами разработками вы ни работали, какова бы ни была сложность вашего
проекта, в этой книге вы найдете нужную информацию, она заставит вас
размышлять и поможет создать совершенный код. Книга состоит из 35 глав,
предметного указателя и библиографии.
. Уверяю, мне помогло и продолжает помагать, хотя... все равно мой код несовершенен
Re[3]: Почему ваш код – отстой
От: kwas Россия  
Дата: 20.06.06 18:53
Оценка: +2 -1
Здравствуйте, moudrick, Вы писали:

ВН>>предпочитаю догматично следовать господам Саттеру и Александреску, которые утверждают что public-поля могут иметь только классы "без поведения".


M>Господа, ну что вы прям как дети, извините...




M>мы немедленно применяем рефакторинг Encapsulate Field

M>В любой мало-мальски приличной среде программирования для любого мало-мальски приличного ОО языка имеются средства сделать это немедленно в одно движение.

Visual Studio 2005 — мало-мальски приличная? C++ — мало-мальски приличный OO-язык? C учетом упоминания Саттера и Александреску, дальше можно не продолжать?
If a shark stops swimming, it will die. Don't stop swimming, Mr. Mulder.
Every epic equalizer is iso (c)
Re[4]: Почему ваш код – отстой
От: moudrick Россия http://community.moudrick.net/
Дата: 20.06.06 19:40
Оценка: 20 (1) +1 -1 :)
ВН>>>предпочитаю догматично следовать господам Саттеру и Александреску, которые утверждают что public-поля могут иметь только классы "без поведения".

M>>мы немедленно применяем рефакторинг Encapsulate Field

M>>В любой мало-мальски приличной среде программирования для любого мало-мальски приличного ОО языка имеются средства сделать это немедленно в одно движение.

K>Visual Studio 2005 — мало-мальски приличная?

Мне очень жаль, но, учитывая то, что для С++ там нет рефакторинга "Encapsulate field", VS2005 для С++ не является сколько-нибудь приличной.

Чтобы сделать VS2003/2005 более приличной для С++, рекомендую отличную тулзу — Ref++, где есть "Encapsulate member variable..."

K>C++ — мало-мальски приличный OO-язык?

Это отличный мультипарадигменный (в т.ч. и объектно-ориентрированный) язык.

K>C учетом упоминания Саттера и Александреску, дальше можно не продолжать?

Отчего же, продолжайте. Какие именно слова Александреску должны убедить меня догматично следовать вышеуказанному правилу?
Re[2]: Почему ваш код – отстой
От: moudrick Россия http://community.moudrick.net/
Дата: 20.06.06 19:49
Оценка: +2
L_S>Набор слов без пояснения, доказательств, выводов... Цена такой статье = 0.

А свои мозги, чтобы делать выводы, мы уже не умеем применять?

Пояснений же в статье достаточно, только они достаточно компактны, и оттого производят на непосвященного впечатление их отсутствия.

Статья призвана обнажить проблему во всей ее красе, а выбрать путь ее разрешения — это дело целой серии книг. И не одной серии.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.