Re: Рассказ об одной конторе (продолжение)
От: DesWind  
Дата: 19.12.20 18:58
Оценка:
Здравствуйте, barn_czn, Вы писали:

Тут стоит вспомнить эксперимент с группой шимпанзе, водой и бананами: "Так заведено!". Осталось разобраться почему.
Исходя из моего опыта, около 70% правил имеют смысл! А дальше эволюция, а не революция.
Я тоже приходил, "весь в белом"! А как вникаешь, начинаешь понимать почему было сделано именно так. Блин, предшественники тоже, наверное, не дураки были...
Отредактировано 19.12.2020 19:00 DesWind . Предыдущая версия .
Re[3]: Рассказ об одной конторе (продолжение)
От: Gradiens  
Дата: 22.12.20 11:47
Оценка:
Здравствуйте, barn_czn, Вы писали:

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


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


_>>>мой рвотный рефлекс от открытых паблик полей, List<> повсюду разбросаных


C>>Это как?



_>
_>class A
_>{

_>public int MyInt;
_>public List<int> MyInts;
_>public List<float> Myfloats;

_>}
_>



Да вы, батенька, реального легаси не нюхали, раз такие вещи вызывают рвотный рефлекс.

Из недавнего: я вот тоже столкнулся с такими полями. Контекстно поискал использование вне класса (я же уже знаю, что такие штуки могут использоваться через отражение). Не нашел. А когда сделал приватными — внезапно приложение стало падать в случайных местах. Оказалось, в базе данных были записи с именами этих полей и этих классов. Записи читались из базы, классы инстанцировались, поля проставлялись через отражение.
Re[4]: Рассказ об одной конторе (продолжение)
От: barn_czn  
Дата: 22.12.20 18:28
Оценка: -1
Здравствуйте, Gradiens, Вы писали:

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


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


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


_>>>>мой рвотный рефлекс от открытых паблик полей, List<> повсюду разбросаных


C>>>Это как?



_>>
_>>class A
_>>{

_>>public int MyInt;
_>>public List<int> MyInts;
_>>public List<float> Myfloats;

_>>}
_>>



G>Да вы, батенька, реального легаси не нюхали, раз такие вещи вызывают рвотный рефлекс.


да я и не соревнуюсь в нюхании гавнокода.

G>Из недавнего: я вот тоже столкнулся с такими полями. Контекстно поискал использование вне класса (я же уже знаю, что такие штуки могут использоваться через отражение). Не нашел. А когда сделал приватными — внезапно приложение стало падать в случайных местах. Оказалось, в базе данных были записи с именами этих полей и этих классов. Записи читались из базы, классы инстанцировались, поля проставлялись через отражение.


что то не уловил. Вывод то какой? Гавнокод существует?
Re: Рассказ об одной конторе (продолжение)
От: Sealcon190 Соломоновы острова  
Дата: 23.12.20 07:00
Оценка: +1
Как я понял, автор относится к подвиду программистов "да что тут думать, тут прыгать надо!". А контора расчитывала на несколько другой типаж.

Ну слава богу во всём разобрались до окончания испытательного срока. Фактически каждый остался при своих с минимальными потерями времени. Чего кипишить?
Отредактировано 23.12.2020 7:09 Sealcon190 . Предыдущая версия .
Re[5]: Рассказ об одной конторе (продолжение)
От: Gradiens  
Дата: 23.12.20 13:03
Оценка:
_>что то не уловил. Вывод то какой? Гавнокод существует?

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

В твоем примере ты жаловался на открытые поля-коллекции.
Увидел открытое поле — полазил по местам использования — отрефакторил — закоммитил — пилишь свою таску дальше.

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

А прийти и сказать: давайте башенку сломаем и новую построим — много ума не надо.
Re[6]: Рассказ об одной конторе (продолжение)
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 23.12.20 18:12
Оценка: +1
Здравствуйте, Codealot, Вы писали:

C>То есть пойнт в том, что не было скрыто что-то, что можно было скрыть? А List<> тут при чем?


Есть мнение, что наружу стоит выставлять интерфейсный тип IList<> вместо конкретного класса List<>. То же самое касается и других стандартных контейнеров типа IDictionary<,> vs Dictionary<,>.
[КУ] оккупировала армия.
Re[2]: Рассказ об одной конторе (продолжение)
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 23.12.20 18:17
Оценка:
Здравствуйте, Sealcon190, Вы писали:

S>Как я понял, автор относится к подвиду программистов "да что тут думать, тут прыгать надо!". А контора расчитывала на несколько другой типаж.

Мне кажется, все программисты на заре своей карьеры проходят через такой этап, когда "чего тут думать — копать надо!". Но, как видим, некоторые застревают на этом этапе слишком долго.
[КУ] оккупировала армия.
Re[7]: Рассказ об одной конторе (продолжение)
От: Sharov Россия  
Дата: 23.12.20 19:39
Оценка: +1
Здравствуйте, koandrew, Вы писали:


K>Есть мнение, что наружу стоит выставлять интерфейсный тип IList<> вместо конкретного класса List<>. То же самое касается и других стандартных контейнеров типа IDictionary<,> vs Dictionary<,>.


Либо readonlycollection, либо Ienumerable<T>.
Кодом людям нужно помогать!
Re[8]: Рассказ об одной конторе (продолжение)
От: barn_czn  
Дата: 23.12.20 20:10
Оценка:
Здравствуйте, Sharov, Вы писали:

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



K>>Есть мнение, что наружу стоит выставлять интерфейсный тип IList<> вместо конкретного класса List<>. То же самое касается и других стандартных контейнеров типа IDictionary<,> vs Dictionary<,>.


S>либо Ienumerable<T>.


спасибо, хоть ктото. На крайняк вместо List<> выставляют массив.
Re[3]: Рассказ об одной конторе (продолжение)
От: barn_czn  
Дата: 23.12.20 20:21
Оценка:
Здравствуйте, koandrew, Вы писали:

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


S>>Как я понял, автор относится к подвиду программистов "да что тут думать, тут прыгать надо!". А контора расчитывала на несколько другой типаж.

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

Откуда так много тролей? копать , прыгать.. вы через строки читаете? Мне не над чем было ни думать ни копать ни прыгать. По русски пишу — сорцов я так и не увидел.
Re[8]: Рассказ об одной конторе (продолжение)
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 23.12.20 20:46
Оценка:
Здравствуйте, Sharov, Вы писали:

S>Либо readonlycollection, либо Ienumerable<T>.


А если необходимо менять коллекцию из внешнего кода?
[КУ] оккупировала армия.
Re[9]: Рассказ об одной конторе (продолжение)
От: Sharov Россия  
Дата: 23.12.20 21:37
Оценка:
Здравствуйте, koandrew, Вы писали:

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

S>>Либо readonlycollection, либо Ienumerable<T>.
K>А если необходимо менять коллекцию из внешнего кода?

1)Я имел в виду не вместо, а + к IList
2)Делать свою копию и менять.
Кодом людям нужно помогать!
Re[10]: Рассказ об одной конторе (продолжение)
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 23.12.20 21:55
Оценка: +2
Здравствуйте, Sharov, Вы писали:

S>2)Делать свою копию и менять.


Фиговый вариант.
[КУ] оккупировала армия.
Re[7]: Рассказ об одной конторе (продолжение)
От: Codealot Земля  
Дата: 23.12.20 21:59
Оценка: +1
Здравствуйте, koandrew, Вы писали:

K>Есть мнение, что наружу стоит выставлять интерфейсный тип IList<> вместо конкретного класса List<>. То же самое касается и других стандартных контейнеров типа IDictionary<,> vs Dictionary<,>.


В каких-то случаях это может быть нужно, но делать это всегда — не вижу смысла.
Ад пуст, все бесы здесь.
Re[3]: Рассказ об одной конторе (продолжение)
От: UPV Украина  
Дата: 24.12.20 06:39
Оценка: 2 (1) +1
Здравствуйте, barn_czn, Вы писали:

_>Задавал. Ответ — политика безопасности.

_>Дело даже ни в том почему. Меня бы устроил любой ответ, даже "ни хотим, ты любопытный".
_>Дело в том — а как вообще работать?

Я, когда перешел в банк работать, где-то 1.5-2 месяца не имел доступов к рабочей виртуалке (не мог код посмотреть, не мог в джиру зайти и т.д.). Вообще не делал из этого трагедии. Зато прошел целую кучу тренингов по безопасности, корпоративным политикам и т.д. Ну и много нового изучил.

Деньги платят и хотят чтобы лекции слушал — почему не послушать? Ну и есть время выучить что-то новое.
Re[7]: Рассказ об одной конторе (продолжение)
От: AlexRK  
Дата: 24.12.20 09:13
Оценка: +1
Здравствуйте, koandrew, Вы писали:

C>>То есть пойнт в том, что не было скрыто что-то, что можно было скрыть? А List<> тут при чем?


K>Есть мнение, что наружу стоит выставлять интерфейсный тип IList<> вместо конкретного класса List<>. То же самое касается и других стандартных контейнеров типа IDictionary<,> vs Dictionary<,>.


Карго-культ? А что плохого будет, если выставить List вместо IList?
А мнения всякие есть, без вопросов.
Re[8]: Рассказ об одной конторе (продолжение)
От: AlexRK  
Дата: 24.12.20 09:15
Оценка: +4
Здравствуйте, Sharov, Вы писали:

K>>Есть мнение, что наружу стоит выставлять интерфейсный тип IList<> вместо конкретного класса List<>. То же самое касается и других стандартных контейнеров типа IDictionary<,> vs Dictionary<,>.


S>Либо readonlycollection, либо Ienumerable<T>.


Там, где надо readonlycollection — readonlycollection. Там, где надо Ienumerable<T> — Ienumerable<T>. Там, где надо List — List. Там, где пофиг — пофиг.
Re[8]: Рассказ об одной конторе (продолжение)
От: Closer  
Дата: 24.12.20 10:44
Оценка: +1 -1
Здравствуйте, AlexRK, Вы писали:

ARK>Карго-культ? А что плохого будет, если выставить List вместо IList?


У IList куча реализаций, и бывает потребность их менять не меняя интерфейса. Замена же List на Array например, при необходимости, хорошо если выльется в рефакторинг только вашего кода, а например в случае общих библиотек (особенно если не только ваш код их использует) сломает обратную совместимость и создаст кучу гемороя.

Так что это не карго-культ, а просто практика написания хорошего кода (как и с read-only коллекциями). Опят же, как и всегда, тут надо включать голову т.е. если вы разрабатываете небольшой проект и на 100% уверены что не будете публиковать интерфейсы, то можно и List везде использовать (в крайнем случае сделаете небольшой рефакторинг если потребуется реализацию поменять).


P.S. Вообще это всё уже расжёвано и пережовано 1000 раз (тут например). Так что barn_czn прав посылая всех страждущих знаний в google за такими ответами.
Мы были здесь. Но пора идти дальше. (с) Дуглас Коупленд, Рабы "Микрософт"
Re[9]: Рассказ об одной конторе (продолжение)
От: AlexRK  
Дата: 24.12.20 11:15
Оценка: +2
Здравствуйте, Closer, Вы писали:

ARK>>Карго-культ? А что плохого будет, если выставить List вместо IList?


C>У IList куча реализаций, и бывает потребность их менять не меняя интерфейса. Замена же List на Array например, при необходимости, хорошо если выльется в рефакторинг только вашего кода, а например в случае общих библиотек (особенно если не только ваш код их использует) сломает обратную совместимость и создаст кучу гемороя.


Да-да, замена List на Array с интерфейсом IList — это великолепно.

C>Так что это не карго-культ, а просто практика написания хорошего кода (как и с read-only коллекциями). Опят же, как и всегда, тут надо включать голову т.е. если вы разрабатываете небольшой проект и на 100% уверены что не будете публиковать интерфейсы, то можно и List везде использовать (в крайнем случае сделаете небольшой рефакторинг если потребуется реализацию поменять).


Я про это и говорю. Где надо — там надо. А не "надо прям везде!!1". Из одного только факта наличия поля типа List не следует ровным счетом ничего.

C>P.S. Вообще это всё уже расжёвано и пережовано 1000 раз (тут например). Так что barn_czn прав посылая всех страждущих знаний в google за такими ответами.


Спасибо, но лично я карго-культы давно уже не котирую.
Re[9]: Рассказ об одной конторе (продолжение)
От: Codealot Земля  
Дата: 24.12.20 16:55
Оценка:
Здравствуйте, Closer, Вы писали:

C>Опят же, как и всегда, тут надо включать голову т.е. если вы разрабатываете небольшой проект и на 100% уверены что не будете публиковать интерфейсы, то можно и List везде использовать (в крайнем случае сделаете небольшой рефакторинг если потребуется реализацию поменять).


Именно, надо включать голову, а не лепить интерфейсы везде-везде-везде. Кроме того, остается открытым вопрос, что плохого в "public int MyInt;"
Ад пуст, все бесы здесь.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.