Re[11]: [C#] Чем плох инлайн ассайнмент?
От: Sinclair Россия https://github.com/evilguest/
Дата: 12.11.08 07:48
Оценка: +1
Здравствуйте, IT, Вы писали:
IT>Работоспостобность — это не только баги, но ещё и нефункциональные требования, вроде требований к быстродействию и используемым ресурсам. Реализуются эти требования как правило с помощью разнообразных оптимизаций на всех уровнях. Оптимизации, в свою очередь, могут в разы ухудшить читабельность кода. Взять хотя бы распараллеливание или кеширование.
Правильно! Именно поэтому мы и любим средства, которые позволяют использовать распараллеливание и кэширование не ухудшая читаемость.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[11]: [C#] Чем плох инлайн ассайнмент?
От: Undying Россия  
Дата: 12.11.08 09:31
Оценка:
Здравствуйте, IT, Вы писали:

IT>Работоспостобность — это не только баги, но ещё и нефункциональные требования, вроде требований к быстродействию и используемым ресурсам. Реализуются эти требования как правило с помощью разнообразных оптимизаций на всех уровнях. Оптимизации, в свою очередь, могут в разы ухудшить читабельность кода. Взять хотя бы распараллеливание или кеширование.


Оптимизации ухудшающие читабельность выполняются под конкретные требования и затрагивают от силы 10% кода.

IT>И только последним пунктом у нас идёт maintainability (сопровождабельность), частью которой как раз и являются адекватные требования к читабельности кода.


Главное — это соответствие приложения требованиям заказчика сегодня, завтра, через полгода, через пять лет. Читабельный код это необходимое условие выполнения этого требования. Нечитабельный код может соответствовать требованиям заказчика сиюминутно (хотя обычно и в этом случае читабельный код обошелся бы дешевле), но любое изменение этих требований в будущем приводит к проблемам и с работоспособностью, и с функциональностью и со сроками.

IT>Неправильно фиксировать сопровождаемость на первом месте навсегда и ради неё жертвовать функциональными или нефукнциональными требованиями.


Ежели систематически жертвовать читабельностью ради требований, то проект в скором времени сдохнет.

Жертвовать требованиями ради читабельности я не призывал, я говорил, что реанимировать читабельный проект с недостающей функциональностью можно, а вот реанимировать нечитабельный проект с недостающей функциональностью нельзя.
Re[12]: [C#] Чем плох инлайн ассайнмент?
От: Aen Sidhe Россия Просто блог
Дата: 12.11.08 11:13
Оценка: :)
Здравствуйте, Undying, Вы писали:

U>Здравствуйте, IT, Вы писали:


IT>>И только последним пунктом у нас идёт maintainability (сопровождабельность), частью которой как раз и являются адекватные требования к читабельности кода.


U>Главное — это соответствие приложения требованиям заказчика сегодня, завтра, через полгода, через пять лет. Читабельный код это необходимое условие выполнения этого требования. Нечитабельный код может соответствовать требованиям заказчика сиюминутно (хотя обычно и в этом случае читабельный код обошелся бы дешевле), но любое изменение этих требований в будущем приводит к проблемам и с работоспособностью, и с функциональностью и со сроками.


Если контракт на конкретный объём работ — зачем мне закладываться на двести лет вперёд? Я завершил разработку по ТЗ, внедрил, мы разошлись. Так что главное — это соответствие ТЗ.

U>Жертвовать требованиями ради читабельности я не призывал, я говорил, что реанимировать читабельный проект с недостающей функциональностью можно, а вот реанимировать нечитабельный проект с недостающей функциональностью нельзя.


Если вы не можете, это не значит, что это невозможно. Да, дорого. Да, муторно. Но вполне реально. Это я по своему опыту говорю.
С уважением, Анатолий Попов.
ICQ: 995-908
Re[13]: [C#] Чем плох инлайн ассайнмент?
От: Undying Россия  
Дата: 12.11.08 11:30
Оценка:
Здравствуйте, Aen Sidhe, Вы писали:

AS>Если контракт на конкретный объём работ — зачем мне закладываться на двести лет вперёд? Я завершил разработку по ТЗ, внедрил, мы разошлись. Так что главное — это соответствие ТЗ.


В результате через некоторое время заказчик обнаруживает, что получил не совсем то, что хотел (даже если в момент сдачи проект соответствовал требованиям, то со временем требования имеют свойство изменяться), но сделать уже ничего нельзя, т.к. исходный код, написанный по принципу главное реализация ТЗ, а после нас хоть потоп, понять никто не в состоянии.

AS>Если вы не можете, это не значит, что это невозможно. Да, дорого. Да, муторно. Но вполне реально. Это я по своему опыту говорю.


Все реально, только обычно дешевле заново написать, используя отдельные функциональные куски из старого кода.
Re[12]: [C#] Чем плох инлайн ассайнмент?
От: IT Россия linq2db.com
Дата: 12.11.08 12:04
Оценка:
Здравствуйте, Undying, Вы писали:

U>Оптимизации ухудшающие читабельность выполняются под конкретные требования и затрагивают от силы 10% кода.


Да хоть пол процента. Главное, что у оптимизаций приоритет выше, чем у читабельности.

IT>>И только последним пунктом у нас идёт maintainability (сопровождабельность), частью которой как раз и являются адекватные требования к читабельности кода.


U>Главное — это соответствие приложения требованиям заказчика сегодня, завтра, через полгода, через пять лет.


Вот. Правильно.

U>Читабельный код это необходимое условие выполнения этого требования.


А вот это уже не совсем правильно. Можно нанять команду индусов и они закидают будёновками любую белогвардейскую конницу. При ограниченных ресурасах читабельный код, как часть правильного процесса сопровождения, действительно имеет выжное значение.

U>Ежели систематически жертвовать читабельностью ради требований, то проект в скором времени сдохнет.


Если он работает и выполняет свои функции, но плохо читаем, то необходимая цель достигнута. Если же он не работает, но хорошо читабелен, то это провал.
Неясность изложения обычно происходит от путаницы в мыслях.
Если нам не помогут, то мы тоже никого не пощадим.
Re[5]: [C#] Чем плох инлайн ассайнмент?
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.11.08 04:29
Оценка: +4
Здравствуйте, Воронков Василий, Вы писали:

ВВ>>> Объективно ведь никто не заставлял в C# делать так

AVK>>ИМХО, на правоверных сишников рассчитано. Существование i++ и ++i из той же оперы.

ВВ>В принципе-то если тебе надо сделать сначала инкремент, потом передать значение в функицию, то чем плохо:

ВВ>MyFunc(++i)
ВВ>Тоже плохо читается? Но ведь все вроде наглядно
ВВ>Кстати, ведь тернарный оператор тоже в общем-то читабельность не улучшает. И даже нововведенный ??

Я те так скажу. В Nemerle операции ++/-- (и инфиксная и префиксная) и = имеют тип void и стало быть не могут использоваться в выражении. По началу я авторам тоже задал вопрос типа твоего. Получил ответ такой. Мы в дизайне языка стремились избавиться даже от малейших возможностей сделать случайную ошибку программистом.

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

По факту использую изменяемые переменные только там где это действительно может дать огромный выигрыш.

Так что на ваши споры я смотрю с усмешкой. Ты ратуешь за фичу думая, что она обеспечит тебе краткость, в то время как она как раз обеспечивает длинный говнокод который тяжело отлаживать. Как показывает практика вычисления вообще без изменения состояния дает куда более краткий код. Так что "x + 1" становится препочтительнее "х++" и "++х" вместе взятых (и даже вопроса не возникает писать "х + 1" или "1 + х" , а использование рекурсии зачастую лучше чем использование изменяемых переменных в циклах.

Так что я бы лучше обсудил другой вопрос — "Почему современные мэйнстрим-языки навязывают императивный стиль". Какого скажем рожна я не могу в C# создать неизменяемую локальную переменную?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: [C#] Чем плох инлайн ассайнмент?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 14.11.08 06:07
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Я те так скажу. В Nemerle операции ++/-- (и инфиксная и префиксная) и = имеют тип void


А зачем тогда вообще две формы ++?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[6]: [C#] Чем плох инлайн ассайнмент?
От: Воронков Василий Россия  
Дата: 14.11.08 11:45
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Так что на ваши споры я смотрю с усмешкой. Ты ратуешь за фичу думая, что она обеспечит тебе краткость,


Я не ратую за фичу. А пытаюсь развести маленький флейм
Как раз под влиянием твоего комментария в какой-то ветке, что inline assignment это плохо.

VD>в то время как она как раз обеспечивает длинный говнокод который тяжело отлаживать.


Длинный говнокод обеспечивают говнокодеры. На VB.NET, даже при соблюдении всех пассов в целях повышения его, так сказать, "типизированности", говнокод вот выходит даже куда лучше в C#. Ну правда, в том, что приложения плохо написаны виноват язык и его возможности, которыми все пользуют без разрабора?
По-моему как раз напротив — проблема в том, что возможностями языка не пользуются.
А то, что у большинства фичек языка — начиная от самых простеньких вроде того, что оператор возвращает результат операции, и кончая более, так сказать, фундаментальными — есть "побочные" эффекты тут уж ничего не попишешь. Собственно, немалое количество посвящено обсужденями в стиле, полезна ли возможность Х или не полезна.
Да в общем-то и далеко ходить-то не надо. Что пишут в этой ветке, пытаясь доказать, что inline assignment — это плохо? Пишут "говнокод".
Коллеги, ради бога, я вам и без inline assignment такой говнокод напишу, что заснуть всю ночь не сможете

VD>Как показывает практика вычисления вообще без изменения состояния дает куда более краткий код. Так что "x + 1" становится препочтительнее "х++" и "++х" вместе взятых (и даже вопроса не возникает писать "х + 1" или "1 + х" , а использование рекурсии зачастую лучше чем использование изменяемых переменных в циклах.


У меня возникает такое ощущение, что практика показывает, что человеческий мозг очень хорошо умеет приспасабливать к теории
Вот помню были раньше обсуждения — хорошо ли множественное наследование или плохо и почему его нет в C#. Мне вот одно время его не хватало. Теперь я не только о нем не вспоминаю, но, более того, даже готов отстаивать, что множественное наследие — это зло и вообще говоря концептуально неправильно в рамках ООП. А, черт его знает, может так оно и есть. А может, и не так. Но ведь "практика" говорит, извините...

VD>Так что я бы лучше обсудил другой вопрос — "Почему современные мэйнстрим-языки навязывают императивный стиль".


Императивный стиль — это мейнстрим. Практика опять-таки показывает, что у императивного стиля много проблем. Ну а как быть с функциональным стилем? Не появится ли у него даже большее количество проблем, чем у императивного стиля, если он станет мейнстримом?

Я вот в императивном стиле проблем особых не вижу. Когда приложение правильно спроектировано, пишется с использованием мозга и пр. Проблемы ведь на самом деле не из-за императивности возникают.

VD>Какого скажем рожна я не могу в C# создать неизменяемую локальную переменную?


Я бы начал даже с неизменяемых in параметров функций.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[7]: [C#] Чем плох инлайн ассайнмент?
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.11.08 14:35
Оценка: :)
Здравствуйте, AndrewVK, Вы писали:

AVK>А зачем тогда вообще две формы ++?


А они автоматом получаются. Описываешь оператор и можешь использовать его как нравится. Особенно хорошо для эстетствующих особ или долболомов считающих что скажем ++i быстрее чем i++.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: [C#] Чем плох инлайн ассайнмент?
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.11.08 14:55
Оценка: 2 (1)
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Длинный говнокод обеспечивают говнокодеры. На VB.NET, даже при соблюдении всех пассов в целях повышения его, так сказать, "типизированности", говнокод вот выходит даже куда лучше в C#. Ну правда, в том, что приложения плохо написаны виноват язык и его возможности, которыми все пользуют без разрабора?


Конечно появление говнокода без "умелых" рук невозможно (ну или плачевного состояния мозга программиста в момент написания оного, например, из-за аврала). Однако есть четкая зависимость между общим объемом говнокода на еденицу площади проекта и языком программирования. Скажем С++ по этом параметру явный лидер. Это не значит, что на С++ нельзя писать качественный код. Это значит, что С++ не способствует написанию хорошего кода.

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

ВВ>Да в общем-то и далеко ходить-то не надо. Что пишут в этой ветке, пытаясь доказать, что inline assignment — это плохо? Пишут "говнокод".

ВВ>Коллеги, ради бога, я вам и без inline assignment такой говнокод напишу, что заснуть всю ночь не сможете

Это не аргумент. Я тебе отвечу так. Если код можно написать без изменения состояния, то его лучше написать без него. Иннлайн-присвоение способствует изменению состояния внутри выражения, что легко приводит к появлению трудно уловимых ошибок. Ну, а раз известны пути получения более надежного и при этом более короткого когда, так зачем заниматься извращениями и использовать ненадёжные паттерны?

Так что присвоение нужно рассматривать как оптимизацию. А раз это оптимизация, то ее лучше выделить в отдельную строку, а то и функцию. Так оно надежнее будет. И так мест где можно сделать ошибку слишком много.

VD>>Как показывает практика вычисления вообще без изменения состояния дает куда более краткий код. Так что "x + 1" становится препочтительнее "х++" и "++х" вместе взятых (и даже вопроса не возникает писать "х + 1" или "1 + х" , а использование рекурсии зачастую лучше чем использование изменяемых переменных в циклах.


ВВ>У меня возникает такое ощущение, что практика показывает, что человеческий мозг очень хорошо умеет приспасабливать к теории

ВВ>Вот помню были раньше обсуждения — хорошо ли множественное наследование или плохо и почему его нет в C#. Мне вот одно время его не хватало. Теперь я не только о нем не вспоминаю, но, более того, даже готов отстаивать, что множественное наследие — это зло и вообще говоря концептуально неправильно в рамках ООП. А, черт его знает, может так оно и есть. А может, и не так. Но ведь "практика" говорит, извините...

Мне кажется не надо переводить стрелки. У множественного наследования есть свои плюсы и минусы. У вычислений без изменения состояния есть только один минус — оно может быть менее шустрым нежели антологичное но с присвоениями. Но если мы и так получаем приемлемую производительность, то возиться с изменением состояния глупо. На этом мы только теряем.

VD>>Так что я бы лучше обсудил другой вопрос — "Почему современные мэйнстрим-языки навязывают императивный стиль".


ВВ>Императивный стиль — это мейнстрим.


Это ошибочное заявление которое отлично опровергается хотя бы тем фактом, что в мэйнстриме прекрасно используется SQL (не имеющих к императиву ни малейшего отношения), а теперь еще и Линк.

Просто универсальные языки пока что не дотягивают по удобству применения ФП. Как только дорастут, так сразу окажется, что мэйнстрим без проблем примет это диковенное блюдо.

ВВ>Практика опять-таки показывает, что у императивного стиля много проблем. Ну а как быть с функциональным стилем? Не появится ли у него даже большее количество проблем, чем у императивного стиля, если он станет мейнстримом?


ФП — это всего лишь набор паттернов и средства языка упрощающие их использование. Конечно с дуру можно и хрен сломать, но учитывая, что эти паттерны направлены на упрощение отладки и понимания кода, я не вижу проблем с ними.

ВВ>Я вот в императивном стиле проблем особых не вижу. Когда приложение правильно спроектировано, пишется с использованием мозга и пр. Проблемы ведь на самом деле не из-за императивности возникают.


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

VD>>Какого скажем рожна я не могу в C# создать неизменяемую локальную переменную?


ВВ>Я бы начал даже с неизменяемых in параметров функций.


Это частности. Скажем в Немерле все переменные по умолчанию не изменяемые. В том числе и параметры. Если надо их сделать изменяемыми, то надо использовать ключевое слово mutable перед ним. И никаких проблем. Только изменение подхода. Так просто, а работает на ура.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: [C#] Чем плох инлайн ассайнмент?
От: Воронков Василий Россия  
Дата: 14.11.08 17:00
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Конечно появление говнокода без "умелых" рук невозможно (ну или плачевного состояния мозга программиста в момент написания оного, например, из-за аврала). Однако есть четкая зависимость между общим объемом говнокода на еденицу площади проекта и языком программирования. Скажем С++ по этом параметру явный лидер. Это не значит, что на С++ нельзя писать качественный код. Это значит, что С++ не способствует написанию хорошего кода.

VD>По мне так если язык уберегает от граблей, то это несомненный плюс. От того на плюсах я вообще перестал писать.

С этим я более чем согласен. Но если уж говорить о конкретных особенностях языка, то тут, мне кажется, не так все однозначно. В отношении практически любой возможности действует принцип "заставь дурака молиться...". Да он и не только в программировании действует. Вот я тоже могу развести дискуссию по поводу того, что много локальных переменных — это плохо, ухудшает читаемость, приводит к "говнокоду", а следовательно, нужно убирать локальные переменные везде где только можно.

ВВ>>Да в общем-то и далеко ходить-то не надо. Что пишут в этой ветке, пытаясь доказать, что inline assignment — это плохо? Пишут "говнокод".

ВВ>>Коллеги, ради бога, я вам и без inline assignment такой говнокод напишу, что заснуть всю ночь не сможете
VD>Это не аргумент. Я тебе отвечу так. Если код можно написать без изменения состояния, то его лучше написать без него. Иннлайн-присвоение способствует изменению состояния внутри выражения, что легко приводит к появлению трудно уловимых ошибок. Ну, а раз известны пути получения более надежного и при этом более короткого когда, так зачем заниматься извращениями и использовать ненадёжные паттерны?
VD>Так что присвоение нужно рассматривать как оптимизацию. А раз это оптимизация, то ее лучше выделить в отдельную строку, а то и функцию. Так оно надежнее будет. И так мест где можно сделать ошибку слишком много.
VD>Мне кажется не надо переводить стрелки. У множественного наследования есть свои плюсы и минусы. У вычислений без изменения состояния есть только один минус — оно может быть менее шустрым нежели антологичное но с присвоениями. Но если мы и так получаем приемлемую производительность, то возиться с изменением состояния глупо. На этом мы только теряем.

Да дело тут не в сравнении MH и инлайн ассайнмента, конечно. Речь об изменении отношения. Вот года три назад ты бы высказал то же самое мнение об inline assignment?

VD>>>Так что я бы лучше обсудил другой вопрос — "Почему современные мэйнстрим-языки навязывают императивный стиль".

ВВ>>Императивный стиль — это мейнстрим.
VD>Это ошибочное заявление которое отлично опровергается хотя бы тем фактом, что в мэйнстриме прекрасно используется SQL (не имеющих к императиву ни малейшего отношения), а теперь еще и Линк.

Ну если не касаться работы с данными, то разве не мейнстрим? По крайней мере в значительно большей степени чем ФП.
Ты понимаешь, мне лично, в рамках какого-нибудь нетривиального интересного проекта преимущества того же Немерле очевидны. А вот в рамках стандартного такого промышленного проектика — уже далеко не так очевидны. Ибо проблемы как-то все другого плана возникают, не с языком и императивным стилем связанные.

VD>Просто универсальные языки пока что не дотягивают по удобству применения ФП. Как только дорастут, так сразу окажется, что мэйнстрим без проблем примет это диковенное блюдо.

ВВ>>Практика опять-таки показывает, что у императивного стиля много проблем. Ну а как быть с функциональным стилем? Не появится ли у него даже большее количество проблем, чем у императивного стиля, если он станет мейнстримом?
VD>ФП — это всего лишь набор паттернов и средства языка упрощающие их использование. Конечно с дуру можно и хрен сломать, но учитывая, что эти паттерны направлены на упрощение отладки и понимания кода, я не вижу проблем с ними.
ВВ>>Я вот в императивном стиле проблем особых не вижу. Когда приложение правильно спроектировано, пишется с использованием мозга и пр. Проблемы ведь на самом деле не из-за императивности возникают.
VD>Как только в программировании кому-то надо обосновать дырявость используемого им корыта, так сразу начинаются рассуждения о правильном проектировании.

Ну не обосновать, а защитить
А что еще делать? Призать, что императивное программирование — говно? Ну может и говно, но надо как-то жить с этим. Опять-таки не припомню, чтобы я сталкивался с какими-то "специальными" проблемами, которые приводили бы к тому, что хотелось, что называется, "все бросить", развести руками, и сказать — что вот, опять этот долбаный "императивный стиль" виноват, вот писали бы мы на ФП...
Наличие новых "паттернов и средств языка упрощающих их использование" ведь само по себе не означает, что код сразу станет лучше Вот ты, я уверен, напишешь на Немерле более интересное и совершенное приложение, чем на C#.

И потом, неужели тебе лично не доводилось видеть красиво написанных программ в императивном стиле? Я вот не вижу в нем "корень зла", честно.

VD>>>Какого скажем рожна я не могу в C# создать неизменяемую локальную переменную?

ВВ>>Я бы начал даже с неизменяемых in параметров функций.
VD>Это частности. Скажем в Немерле все переменные по умолчанию не изменяемые. В том числе и параметры. Если надо их сделать изменяемыми, то надо использовать ключевое слово mutable перед ним. И никаких проблем. Только изменение подхода. Так просто, а работает на ура.

Кстати, раз уж речь зашла о Немерле. В Немерле действительно есть optional-параметры? И зачем они там?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[9]: [C#] Чем плох инлайн ассайнмент?
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.11.08 18:45
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>И потом, неужели тебе лично не доводилось видеть красиво написанных программ в императивном стиле? Я вот не вижу в нем "корень зла", честно.


Я тебе говорю о том, что если взять к примеру С или Виртовский Паскаль и сравнить их с Обжект Паскалем и С++, то никто не будет спорить, что наличие в арсенале программиста не только структурного программирования, но и объектно-ориентированного является несомненным плюсом. Но почему-то многие начинают спорить с тем, что поддержка языком СП + ООП + ФП + МП лучше нежели поддержка только СП + ООП.

Ну, а про корень зал я уже сказал. Программу не меняющую переменных отлаживать банально проще. Ее состояние лежит в стеки и она похожа на набор преобразований данных. Ты можешь просто подниматься по стеку вверх и видеть что происходило до момента приведшего к проблеме. Но, конечно, жить в императивном мире и при этом не пользоваться императивом в принципе невозможно. Иногда императив нужен чтобы повысить производительность, иногда чтобы упростить (архитекрурно) решение. По сему я сморю на это как на дизайнерский выбор. Там где я не получаю выгоды от императива или, что еще хуже, получаю проблемы, я постараюсь использовать императив. Там где получаю, я выберу его. Это взвешенный выбор.

ВВ>Кстати, раз уж речь зашла о Немерле. В Немерле действительно есть optional-параметры? И зачем они там?


Причем тут это? Ну, да ладно.
Да, и не только optional, но и именованных. Правда optional-параметры поддерживаются несколько более ограничено. Их нельзя инициализировать экземплярами объектов. Но это тоже можно доработать.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: [C#] Чем плох инлайн ассайнмент?
От: ili Россия  
Дата: 27.11.08 16:06
Оценка:
Здравствуйте, IT, Вы писали:

IT>Да хоть пол процента. Главное, что у оптимизаций приоритет выше, чем у читабельности.


эт смотря в какой угол эта оптимизация ставиться.
мне вот надо, что-б у меня процесс обслуживания клиента в одном куске системы не превышал 400мс (а лучше и близко к этим 400мс не подкрадывался). вот тут я таки воюю за каждые 10мс.
в другом куске той же системы нет таких жестких требований, ну и на кой мне там оптимизация которая даст +10мс но сделает код нечитабельным?

IT>Если он работает и выполняет свои функции, но плохо читаем, то необходимая цель достигнута. Если же он не работает, но хорошо читабелен, то это провал.


вот со вторым предложением согласен, а с первым нет т.к. работает оно до той поры, пока в программу изменения не вносят, а потом ба-бах и все ломается (а еще хуже если приходится по коду реверсом дизайн востанавливать, вот это ваще шоу ). Да и как-то не вяжется первое предложение с тем же BLT и его вылезанностью на предмет читаемости

короче я к тому, что рулит сбалансированность, а крайности никогда до добра не доводят... а если честно то вообще из чистого графоманства ))
Re[4]: [C#] Чем плох инлайн ассайнмент?
От: Erop Россия  
Дата: 27.11.08 22:54
Оценка:
Здравствуйте, ili, Вы писали:

ili>Здравствуйте, Воронков Василий, Вы писали:


ВВ>>Ну типа:


ВВ>>
ВВ>>int x;

ВВ>>if ((x = MyFunc()) > 4 && x % 2 == 0)
ВВ>>{

ВВ>>}
ВВ>>


ili>вот полчаса думал что это тут написано... тем и плох.

ili>код пишется не для компилятора, а для того кто его сопровождать будет.

А главное, не ясно, от чего не написать так:
int x = MyFunc();
if ( x > 4 && x % 2 == 0)
{
}
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[14]: [C#] Чем плох инлайн ассайнмент?
От: IT Россия linq2db.com
Дата: 28.11.08 16:17
Оценка: +1
Здравствуйте, ili, Вы писали:

ili>эт смотря в какой угол эта оптимизация ставиться.


Именно. Как правило оптимизация — это результат реализации нефункциональных требований. Если оптимизация никаких проблем не решает, то она не имеет право на жизнь.

IT>>Если он работает и выполняет свои функции, но плохо читаем, то необходимая цель достигнута. Если же он не работает, но хорошо читабелен, то это провал.


ili>вот со вторым предложением согласен, а с первым нет т.к. работает оно до той поры, пока в программу изменения не вносят, а потом ба-бах и все ломается (а еще хуже если приходится по коду реверсом дизайн востанавливать, вот это ваще шоу ).


Это всё понятно и никто с этим не спорит. Вопрос стоит именно как или-или.

ili>Да и как-то не вяжется первое предложение с тем же BLT и его вылезанностью на предмет читаемости


Тем не менее в BLT полно непонятных на первый взгляд мест, тот же emit или mapping. Без оптимизаций алгоритм мапинга занимал бы 20 строк, но работал бы в разы медленнее.

ili>короче я к тому, что рулит сбалансированность, а крайности никогда до добра не доводят... а если честно то вообще из чистого графоманства ))


Рулит адекватная система приоритетов. Читабельный код важен, очень важен и часто является критерием успеха при длитетельной эксплуатации и развитии системы. Но приносить в жертву функциональные или нефункциональные требования ради читабельности нельзя.
Неясность изложения обычно происходит от путаницы в мыслях.
Если нам не помогут, то мы тоже никого не пощадим.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.