Re[68]: Как не надо писать код
От: AlexNek  
Дата: 30.04.11 22:46
Оценка:
Здравствуйте, samius, Вы писали:
...
спасибо за ответ, но есть большая вероятность того что в ближайшие пару дней мне не удастся ответить, так что звиняйте если что.
avalon 1.0rc3 rev 419, zlib 1.2.3
Re[4]: Как не надо писать код
От: Sealcon190 Соломоновы острова  
Дата: 05.05.11 07:51
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Я не понимаю, о какой работоспособности можно говорить в коде, где кто-то присылает массив длинной 10 и просит отправить 15 байт.


В фирмваре такое сплошь и рядом. Например, речь идёт о неком железе, запись на которое может происходить только кусками, кратными размеру страницы.
Re: Как не надо писать код
От: Bandy11 Россия  
Дата: 05.05.11 17:29
Оценка:
Здравствуйте, AlexNek, Вы писали:

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


По мне код надо писать как можно проще, без наворотов, — потому что когда приходится
вносить добавления (исправления) через 5-10 лет (как мне) – уже самому приходится вспоминать – и что же этот кусок делает?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Как не надо писать код
От: Bandy11 Россия  
Дата: 05.05.11 17:29
Оценка:
Здравствуйте, xobotik, Вы писали:

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

X>
X>if (buffer != null)
X>

X>Порадовало такое ощущение что код писал параноик)

От многих привычек не так-то и просто избавиться.
Например: на М220 сравнение I=3 никогда не сработает т.к. в целой переменной I не 3 а
2,(9) приходилось добавлять дельту, и при переходе на ЕСку первое время делал также.
А на ЕСке — при записи на винчестер не было никакой гарантии что, данные файла, записались нормально
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Как не надо писать код
От: Ночной Смотрящий Россия  
Дата: 05.05.11 20:55
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Незнаю как вы, но большой одной строки для foreach я как то слабо представляю, поэтому также не смог сразу врубиться, не говоря уж об обилии лямбд


Код вполне очевидный и более менее просто читаемый. Твое плохое знакомство с рядом конструкций C# 3 не делает этот код объективно плохим.
Re[3]: Как не надо писать код
От: Ops Россия  
Дата: 05.05.11 22:15
Оценка:
Здравствуйте, AlexNek, Вы писали:

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


FRE>> AN>Что то часто мне стал попадаться код в который сразу не врубишься, при этом код делает свою задачу правильно. Предлагаю постить сюда ваши образчики и комментарии.


FRE>> 25 см?

AN>Ну если это код, то я зелёный

Ты зеленый, а у меня 26.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[5]: Как не надо писать код
От: Sinclair Россия https://github.com/evilguest/
Дата: 06.05.11 00:49
Оценка:
Здравствуйте, Sealcon190, Вы писали:

S>В фирмваре такое сплошь и рядом. Например, речь идёт о неком железе, запись на которое может происходить только кусками, кратными размеру страницы.

Хороший поинт. Но по коду примера этого не видно: по факту функция в данном случае отправит 11 байт (префикс+10 байт), никак не ругаясь.
То, о чём вы говорите, должно работать совершенно наоборот: пользователь отправляет те данные, которые ему нужны, а уже функция взаимодействия с фирмварью обеспечивает выравнивание.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[4]: Как не надо писать код
От: Andy77 Ниоткуда  
Дата: 06.05.11 02:39
Оценка:
Здравствуйте, Sinix, Вы писали:

S>1. warning CS3001: Argument type 'uint' is not CLS-compliant

S>2. а собсно зачем заводить массив, который займёт >2гб памяти? (берём крайний случай — с byte[]/bool[].) В типовой системе из-за фрагментации легко получить OutOfMemory даже на 200мб.

Как это зачем? Мне, например, совсем не помешало бы, объемы данных у нас бывают очень большие. Или "64КБ достаточно для всех"?
Re[8]: Как не надо писать код
От: Andy77 Ниоткуда  
Дата: 06.05.11 02:48
Оценка:
Здравствуйте, Sinix, Вы писали:

K>>Дык уже У массивов есть LongLength

S>
S>Оно есть начиная с .NET 1.1. Позор на мою неседую голову, что ещё сказать.

Есть-то оно есть, но во всех интерфейсах коллекций используется int.
Re[5]: Как не надо писать код
От: Sinix  
Дата: 06.05.11 04:35
Оценка:
Здравствуйте, Andy77, Вы писали:

A>Как это зачем? Мне, например, совсем не помешало бы, объемы данных у нас бывают очень большие. Или "64КБ достаточно для всех"?


Нет конечно. просто шансов, что такой софт регулярно будет падать с out of memory >> 99%.

Ну, и если реально надо — или перелазить на unmanaged, или глядеть в сторону готовых решений — например,
http://blogs.msdn.com/b/joshwil/archive/2005/08/10/450202.aspx
Re[2]: Как не надо писать код
От: sidorov18 США  
Дата: 06.05.11 08:45
Оценка:
Здравствуйте, xobotik, Вы писали:

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

X>
X>if (buffer != null)
X>

X>Порадовало такое ощущение что код писал параноик)

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

В с++ на такое обычно пишутся ассерты.
Re[4]: Как не надо писать код
От: AlexNek  
Дата: 06.05.11 15:43
Оценка:
Здравствуйте, Ops, Вы писали:

Ops> AN>Здравствуйте, _FRED_, Вы писали:


Ops> FRE>> AN>Что то часто мне стал попадаться код в который сразу не врубишься, при этом код делает свою задачу правильно. Предлагаю постить сюда ваши образчики и комментарии.


Ops> FRE>> 25 см?


Ops> AN>Ну если это код, то я зелёный


Ops> Ты зеленый, а у меня 26.


А дело разве в длине? Да и жалко что вместо Петра 1, не была особа женского пола, хоть вагоны не нужно было переставлять
avalon 1.0rc3 rev 419, zlib 1.2.3
Re[3]: Как не надо писать код
От: AlexNek  
Дата: 06.05.11 15:43
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС> AN>Незнаю как вы, но большой одной строки для foreach я как то слабо представляю, поэтому также не смог сразу врубиться, не говоря уж об обилии лямбд


НС> Код вполне очевидный и более менее просто читаемый. Твое плохое знакомство с рядом конструкций C# 3 не делает этот код объективно плохим.


а где там конструкции C# 3 или мы о разном коде говорим?
avalon 1.0rc3 rev 419, zlib 1.2.3
Re[2]: Как не надо писать код
От: AlexNek  
Дата: 06.05.11 15:43
Оценка:
Здравствуйте, Bandy11, Вы писали:

B> AN>Что то часто мне стал попадаться код в который сразу не врубишься, при этом код делает свою задачу правильно. Предлагаю постить сюда ваши образчики и комментарии.


B> По мне код надо писать как можно проще, без наворотов, — потому что когда приходится

B> вносить добавления (исправления) через 5-10 лет (как мне) – уже самому приходится вспоминать – и что же этот кусок делает?
совершенно согласен
avalon 1.0rc3 rev 419, zlib 1.2.3
Re[6]: Как не надо писать код
От: Sealcon190 Соломоновы острова  
Дата: 07.05.11 13:50
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Хороший поинт. Но по коду примера этого не видно: по факту функция в данном случае отправит 11 байт (префикс+10 байт), никак не ругаясь.


Согласен. Я всего лишь отметил излишне обобщённое высказывание.
Re[6]: Как не надо писать код
От: Andy77 Ниоткуда  
Дата: 10.05.11 20:45
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Нет конечно. просто шансов, что такой софт регулярно будет падать с out of memory >> 99%.


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

S>Ну, и если реально надо — или перелазить на unmanaged, или глядеть в сторону готовых решений — например,

S>http://blogs.msdn.com/b/joshwil/archive/2005/08/10/450202.aspx

Мы в некотором роде как раз и разрабатываем "готовые решения". Понятно, что существуют обходные пути, но всё это напоминает мучения с моделями памяти 8086
Re[7]: Как не надо писать код
От: Sinix  
Дата: 11.05.11 00:19
Оценка:
Здравствуйте, Andy77, Вы писали:

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

Все 200 Максимальный размер объекта в .Net — 2гб. Кстати, мы ведь обсуждаем только решения под x64?

A>Мы в некотором роде как раз и разрабатываем "готовые решения". Понятно, что существуют обходные пути, но всё это напоминает мучения с моделями памяти 8086


Так способов куча — BigArray, MMF, аллокация в нативной куче... Всё не подходит?
Re[8]: Как не надо писать код
От: Andy77 Ниоткуда  
Дата: 11.05.11 05:26
Оценка: +1
Здравствуйте, Sinix, Вы писали:

S>Так способов куча — BigArray, MMF, аллокация в нативной куче... Всё не подходит?


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