The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Релиз набора компиляторов GCC 13, opennews (??), 26-Апр-23, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


28. "Релиз набора компиляторов GCC 13"  +8 +/
Сообщение от soomrack (ok), 26-Апр-23, 18:47 
auto это очень хорошее ключевое слово, если им правильно пользоваться. Оно позволяет делать код менее прибитым к типам данных и более простым. Только нужно им праивльно пользоваться.

Вот, например, писать
    auto idx = 0;
не стоит, т.к. это будет int, а не long int, и не unsigned int, и т.д.

А писать
    auto alice = person;
очень даже правильно, т.к. тип alice будет такой же как у person и можно будет спокойно менять тип person при рефакторинге, не затрагивая эту часть кода. Да и ошибиться с именем структуры тоже не получится, т.к. тут просто auto.

Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

32. "Релиз набора компиляторов GCC 13"  +/
Сообщение от Аноним (32), 26-Апр-23, 19:08 
Или тебе нужен был определенный тип alice, а теперь кто-то "порефакторил" код изменив person и у тебя теперь везде потенциальные ошибки, но которые не всплывают на этапе компиляции.
Ответить | Правка | Наверх | Cообщить модератору

34. "Релиз набора компиляторов GCC 13"  +1 +/
Сообщение от soomrack (ok), 26-Апр-23, 19:25 
Если нужен прям определенный тип, то там auto ставить, конечно, нельзя. auto это доп возможности, удобные, но как и все в ЯП оно дает много вариантов как выстрелить себе в ногу.
Ответить | Правка | Наверх | Cообщить модератору

43. "Релиз набора компиляторов GCC 13"  +/
Сообщение от Аноним (32), 26-Апр-23, 20:38 
В zig просто выводится тип автоматически, без этих костылей.

В принципе auto - это необходимый, к сожалению, костыль в С++.

Ответить | Правка | Наверх | Cообщить модератору

55. "Релиз набора компиляторов GCC 13"  –2 +/
Сообщение от Аноним (60), 26-Апр-23, 21:20 
Если это так, то си перестает быть языком статической типизации.
Ответить | Правка | К родителю #28 | Наверх | Cообщить модератору

158. "Релиз набора компиляторов GCC 13"  +/
Сообщение от n00by (ok), 27-Апр-23, 11:24 
> Если это так, то си перестает быть языком статической типизации.

Веет башпрограммистами автономных операционных систем.

Статическая типизация - это когда тип фиксируется на этапе трансляции.

Ответить | Правка | Наверх | Cообщить модератору

88. "Релиз набора компиляторов GCC 13"  +1 +/
Сообщение от Аноним (-), 26-Апр-23, 22:33 
> А писать
>     auto alice = person;
> очень даже правильно, т.к. тип alice будет такой же как у person
> и можно будет спокойно менять тип person при рефакторинге,

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

И нормальные люди для этого делали typedef'ы на какойнибудь person_t который определен как эвона какой struct, например. А при рефакторе ему поля добавить, снести, огрести все матюки компилера на обращение к отсутствюущему полю, например, сразу узнав где баг рефактора. И чего там улучшит auto кто б его знает.

> не затрагивая эту часть кода.

При рефакторе это отличная заявка на залет.

> Да и ошибиться с именем структуры тоже не получится, т.к. тут просто auto.

А зачем ошибаться именем структуры? Завести person_t какой и всегда его везде давать (something_t это такой полуофициальный convention практикуемый многими кодерами для показа что вот это словно именно тип данных а не что-то еще). При этом указание типа может быть лаконичным но несущим в себе инфо о намерениях кодера, в отличие от "auto".

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

Ответить | Правка | К родителю #28 | Наверх | Cообщить модератору

227. "Релиз набора компиляторов GCC 13"  +/
Сообщение от Аноним (228), 27-Апр-23, 21:09 
> auto alica = person;

Это издевательство над оператором присвоения.
А какое значение у person и нужно ли оно в alisa?
Чем typedef не угодил?
Си уже определяет типы неявно? Переписывать учебники, справочники, вики?

Ответить | Правка | К родителю #28 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру