Re[10]: А что за мода на auto?...
От: Sheridan Россия  
Дата: 04.05.22 18:10
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Ну так всюду и не надо. Предполагается, что человек — разумное существо.

Ну так а теперь отлистай назад и посмотри с чего началось.

S>>Ещо один аргумент против автотипов.

Pzz>Против C++, он весь такой
Сочувствую.
Matrix has you...
Re[15]: А что за мода на auto?...
От: Ночной Смотрящий Россия  
Дата: 04.05.22 19:01
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Тип может быть выведен из констант.


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

Pzz> Или из типа той функции, которая принесла изначальное значение переменной.


Но в самой функции тип то будет.

Pzz>Посмотри на какой-нибудь Хаскель, там очень редко встречается явное указание типа.


Хаскел — экспериментальный язык, поэтому приводить в пример его надо очень аккуратно.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[13]: А что за мода на auto?...
От: Ночной Смотрящий Россия  
Дата: 04.05.22 19:01
Оценка:
Здравствуйте, Pzz, Вы писали:

НС>>У тебя часто так бывало, что int стал float? У тебя вообще часто тип float в программах встречается? Какой процент от общего количества использований типов составляет float?

Pzz>В JS такое бывает. Там все числа — float.

Мы тут говорили про статическую типизацию.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[15]: А что за мода на auto?...
От: Privalov  
Дата: 04.05.22 20:11
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Тип тоже влияет на читабельность.


Каким образом?

S>Точно так же придётся по коду гулять чтобы выяснить тип как ты гулял с именами.


Зачем? Нормальный редактор сам подскажет, какой тип у переменной. Вот когда видишь странные имена, становится не до типов.

S>При том
Автор: Философ
Дата: 03.05.22
— последняя фраза. Так как для рефакторинга есть инструменты, то остаётся только предположить что "некрасивые длинные диффы".


По ссылке с последней фразой все в порядке. Приходилось мне тип возвращаемого значения менять. И еще кое-что делать. Без var я бы запарился код чинить.

S>auto вообще с здравым смыслом несовместимо.


Обоснуй. Либо речь идет о каком-то особенном здравом смысле. Я в шарпе var использую постоянно. И никаких проблем не испытываю. Правда, поддержка шарпа со стороны студии получше, чем плюсов.

S>Где удобно, я так и писал. Но не везде подряд.


Локальным переменным удобнее выволить тип автоматически в подавляющем большинстве случаев. Особенно если тип длинный, с шаблонами (в моем случае с generic-ами). Кстати, вдруг в процессе тестирования выяснится, что в данном месте лучше применить список вместо вектора, c использованием var такой переход пройдет намного менее напряжно, чем с ручной заменой вектора на список по всем местам. Да еще всегда есть шанс что-то упустить. Компилятор, конечно, пропуск обнаружит, но все равно время уйдет.

P>>Ты точно не путаешь var с dynamic? Или что там в плюсах, голый void-указатель?

S>Точно.

Судя по твоим сообщениям, таки путаешь.
Re[16]: А что за мода на auto?...
От: vsb Казахстан  
Дата: 04.05.22 20:34
Оценка: +1
Здравствуйте, Privalov, Вы писали:

S>>Точно так же придётся по коду гулять чтобы выяснить тип как ты гулял с именами.


P>Зачем? Нормальный редактор сам подскажет, какой тип у переменной. Вот когда видишь странные имена, становится не до типов.


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

Моё правило использования var — если тип очевиден из имени переменной или из инициализирующего значения, то его можно использовать. Если не очевиден, то надо прописывать явный тип. То бишь var x = 1; var s = "hello"; var sb = new StringBuilder(); var appointment = ... (где у appointment тип Appointment). При этом получается примерно 50 на 50 и мне такой результат нравится. По сути цель var в моем коде — убирать дублирование. Нет смысла писать StringBuilder sb = new StringBuilder(), никакой информации это не несёт для читателя. А если несёт, то var не нужен.
Re[17]: А что за мода на auto?...
От: Ночной Смотрящий Россия  
Дата: 05.05.22 07:53
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Моё правило использования var — если тип очевиден из имени переменной или из инициализирующего значения, то его можно использовать. Если не очевиден, то надо прописывать явный тип. То бишь var x = 1; var s = "hello"; var sb = new StringBuilder(); var appointment = ... (где у appointment тип Appointment). При этом получается примерно 50 на 50 и мне такой результат нравится.


А где примеры неочевидностей, когда явный тип улучшает читаемость?
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[18]: А что за мода на auto?...
От: vsb Казахстан  
Дата: 05.05.22 10:32
Оценка: +1
Здравствуйте, Ночной Смотрящий, Вы писали:

vsb>>Моё правило использования var — если тип очевиден из имени переменной или из инициализирующего значения, то его можно использовать. Если не очевиден, то надо прописывать явный тип. То бишь var x = 1; var s = "hello"; var sb = new StringBuilder(); var appointment = ... (где у appointment тип Appointment). При этом получается примерно 50 на 50 и мне такой результат нравится.


НС>А где примеры неочевидностей, когда явный тип улучшает читаемость?


        Set<String> sentReferrerIins =
                employeeRepository.queryByIins(organization, referrerIins).stream()
                        .filter(employee -> employee.getStatus() == SENT_TO_API)
                        .map(Employee::getIin)
                        .collect(toSet());


из идентификатора не очевиден тип. Очевидно только то, что это коллекция, но опять же какая коллекция — не понятно, обычно под коллекцией подразумевают List. Что такое iin — может быть это класс такой, без хорошего знания проекта не понять. Если вдумчиво прочитать инициализатор, можно увидеть, что вызывается toSet но это грубо говоря 10 секунд парсинга кода. При этом если тебе конкретно этот код не интересен, а интересен код ниже и тут тебе хочется только увидеть тип этой переменной, то ты эти 10 секунд потратишь отвлекаясь и вытесняя из краткосрочной памяти другие моменты. А с явным типом ты просто игнорируешь инициализирующее значение и сразу видишь тип.
Re[19]: А что за мода на auto?...
От: Ночной Смотрящий Россия  
Дата: 05.05.22 12:31
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>При этом если тебе конкретно этот код не интересен, а интересен код ниже и тут тебе хочется только увидеть тип этой переменной


А зачем тебе для кода ниже знать конкретный тип коллекции? Вот чем конкретно это знание тебе поможет при чтении?
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[20]: А что за мода на auto?...
От: vsb Казахстан  
Дата: 05.05.22 13:18
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

vsb>>При этом если тебе конкретно этот код не интересен, а интересен код ниже и тут тебе хочется только увидеть тип этой переменной


НС>А зачем тебе для кода ниже знать конкретный тип коллекции? Вот чем конкретно это знание тебе поможет при чтении?


У Set contains работает за O(1) или O(logN), у List за O(N), то бишь если я увижу строчкой ниже contains в цикле я смогу понять, это потенциальный косяк с O(N^2) или всё хорошо. Также Set убирает дубликаты, List — нет, это тоже может иметь значение для какого-то кода.
Отредактировано 05.05.2022 13:18 vsb . Предыдущая версия .
Re[21]: А что за мода на auto?...
От: Ночной Смотрящий Россия  
Дата: 05.05.22 13:44
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>У Set contains работает за O(1) или O(logN), у List за O(N)


В этом случае проблема будет именно в том самом коде, который ты читать не хочешь.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[22]: А что за мода на auto?...
От: vsb Казахстан  
Дата: 05.05.22 13:51
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

vsb>>У Set contains работает за O(1) или O(logN), у List за O(N)


НС>В этом случае проблема будет именно в том самом коде, который ты читать не хочешь.


Проблема будет в коде ниже. К примеру человек что-то снизу дописал и я читаю это изменение в виде diff-а. Для её исправления может понадобиться поменять код выше, согласен, но для того, чтобы в принципе понять, что эта проблема существует, достаточно знать тип, а не код выше.
Re[23]: А что за мода на auto?...
От: Ночной Смотрящий Россия  
Дата: 05.05.22 14:10
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Проблема будет в коде ниже.


Не, проблема именно в том коде, который не позвал нужный toSet. И в названии переменной, которая не содержит в себе важное семантическое указание.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re: Го уродлив!!!
От: L.K. Марс  
Дата: 05.05.22 18:32
Оценка:
vsb>:= абсолютно упоротая конструкция. Зачем она нужна в текущем виде — я вообще не понимаю.

Украли из паскаля/дельфи. В известном смысле, ":=" и "=" более явно различаются между собой, нежели "=" и "==". Особенно при быстром просмотре кода и при отсутствующей/неправильной подсветке.
Re: Тема Rust'а не раскрыта
От: Reset  
Дата: 06.05.22 02:06
Оценка:
Таки, у меня есть неприличный вопрос для ТС, поркуе ты не используешь Rust?

IMHO, если ты пишешь в команде программистов, которые ничего чуть более сложного, чем Pыthon изучить не хотят — тогда их выбор GoLang. Ну, а если же разработчикам не лень повышать свою квалификацию, то в той же нише больше подходит именно Rust.


Таки, шо ты в этот Go полез. Заставили?
Re[2]: Тема Rust'а не раскрыта
От: vsb Казахстан  
Дата: 06.05.22 06:48
Оценка:
Здравствуйте, Reset, Вы писали:

R>Таки, у меня есть неприличный вопрос для ТС, поркуе ты не используешь Rust?


R>IMHO, если ты пишешь в команде программистов, которые ничего чуть более сложного, чем Pыthon изучить не хотят — тогда их выбор GoLang. Ну, а если же разработчикам не лень повышать свою квалификацию, то в той же нише больше подходит именно Rust.


Ну примерно так, да.

R>

R>Таки, шо ты в этот Go полез. Заставили?


Пока что мы используем жаву и ноду. В го я полез, т.к. жавой и нодой не совсем довольны. Жава жрёт неприлично много памяти, нода мне не нравится в принципе. Питон мне тоже не нравится, не люблю я динамику, и там и там однопоточность. Ну и есть желание попробовать на го посадить писать грубо говоря вчерашних выпускников, а может и завтрашних, ибо денег на нормальных синьоров нет, а софт писать хочется, как-то так. О расте тут речь не идёт, он запредельно сложный в наших реалиях. Но скорей всего останемся на жаве.
Отредактировано 06.05.2022 6:49 vsb . Предыдущая версия .
Re[2]: Го уродлив!!!
От: vsb Казахстан  
Дата: 06.05.22 06:49
Оценка:
Здравствуйте, L.K., Вы писали:

vsb>>:= абсолютно упоротая конструкция. Зачем она нужна в текущем виде — я вообще не понимаю.


LK>Украли из паскаля/дельфи. В известном смысле, ":=" и "=" более явно различаются между собой, нежели "=" и "==". Особенно при быстром просмотре кода и при отсутствующей/неправильной подсветке.


Дык там и := есть, и = и ==
Re[17]: А что за мода на auto?...
От: _NN_ www.nemerleweb.com
Дата: 06.05.22 18:17
Оценка:
Здравствуйте, vsb, Вы писали:

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


S>>>Точно так же придётся по коду гулять чтобы выяснить тип как ты гулял с именами.


P>>Зачем? Нормальный редактор сам подскажет, какой тип у переменной. Вот когда видишь странные имена, становится не до типов.


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


vsb>Моё правило использования var — если тип очевиден из имени переменной или из инициализирующего значения, то его можно использовать. Если не очевиден, то надо прописывать явный тип. То бишь var x = 1; var s = "hello"; var sb = new StringBuilder(); var appointment = ... (где у appointment тип Appointment). При этом получается примерно 50 на 50 и мне такой результат нравится. По сути цель var в моем коде — убирать дублирование. Нет смысла писать StringBuilder sb = new StringBuilder(), никакой информации это не несёт для читателя. А если несёт, то var не нужен.


Теперь можно так:
StringBuilder sb = new();


https://riptutorial.com/csharp-9/learn/100003/target-typed-new-expressions

Для более однотипного кода.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[13]: А что за мода на auto?...
От: Философ Ад http://vk.com/id10256428
Дата: 07.05.22 15:17
Оценка:
Здравствуйте, Sheridan, Вы писали:

Ф>>Во-первых, бо ́льшую часть времени оно вообще не нужно: инетесно имя переменной и её значение в текущем месте. Ну вот, например:

S>И как всегда мыслью по древу растекаемся, ага. А вот если бы, а вот рефакторинг, а вот представь...

Бо ́льшая часть разработки ПО — а вот если бы, а вот рефакторинг, а если это... Потому что функционал — %20, а остальное обработка ошибок и нештатных ситуаций.

S>Речь про читабельность и понятность кода.... Скрывать типы в строготипизированном языке под автотип в ущерб читабельности и понятности...


Наоборот: читабельность от этого улучшается, потому что ты не перегружаешь читателя лишней информацией.


S>Давай посмотрим на оригинал (я хз оригинал ли, но явно с этого списано)


Это не оригинал. Оригинал поставляется вместе с RTSS. Если ты его ставил, то находится он здесь:
C:\Program Files (x86)\RivaTuner Statistics Server\SDK\Samples\SharedMemory\RTSSSharedMemorySample\RTSSSharedMemorySampleDlg.cpp
Всё сказанное выше — личное мнение, если не указано обратное.
Re[15]: А что за мода на auto?...
От: Leporidae  
Дата: 10.05.22 12:33
Оценка:
S>>>Да, проще. Не надо угадывать тип переменной, можно просто прочитать его.
НС>>А зачем его угадывать или читать?
S>Возможно ты читаешь код просто так... Ну тебе может и ок. А я в основном дописываю/рефакторю/фикшу баги.

`auto` на возможность это делать влияет примерно никак. На возможность «дописывания» тоже влияет примерно никак.
Re[13]: А что за мода на auto?...
От: Leporidae  
Дата: 10.05.22 12:35
Оценка:
S>>>Угу, а потом 1.9999883785467 землекопа в отчётах появляются из-за того что int стал float
НС>>У тебя часто так бывало, что int стал float?
S>Ни разу. Потому что строгая типизация. Либо явное приведение.

Итак. Каким образом в отчетах станет «1.9999883785467 землекопа» из-за auto?

Ну и то, что ты путаешь статическую и строгую типизацию, тоже хорошо показывает твое «понимание».
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.