Информация об изменениях

Сообщение Re[3]: Символ указателя * и пробел... от 22.05.2023 10:15

Изменено 22.05.2023 10:24 B0FEE664

Re[3]: Символ указателя * и пробел...
Здравствуйте, andyp, Вы писали:

S>>>Какой вариант лучше:

BFE>>Никакой: никаких голых указателей — в цивилизованной программе это просто неприлично.
A>Ухтыжка.
Экспрессивная гипербола применена для выражения полной убеждённости.

A>Указатели как концепция в CS есть, а использовать их нельзя.

Можно, но не прилично.

A>Зря ее лобастые ботаники придумывали, надо отменять.

Про отмену я ничего не писал — не придумывайте. Хорошо, когда язык предоставляет все уровни абстракций и все виды парадигм программирования.

A> Может, ты этот свой совет как-то сузишь, а?

Нет. Зачем? В нормальной программе все указатели обёрнуты в классы, которые предоставляют функциональность специфичную для данного вида указателей.
А уж вот такое:
void fun1(const char* const* const test1)
{
    std::cout << test1[0];
}

вообще быть не должно. Это должно быть что-то вида:
template<std::size_t N>
void fun1(const std::array<std::string_view, N> test1)
{
    std::cout << test1[0];
}


A>Что-то там про передачу владения, интерфейсы или еще что?

Какие проблемы с передачей владения, интерфейсами или еще что?
Re[3]: Символ указателя * и пробел...
Здравствуйте, andyp, Вы писали:

S>>>Какой вариант лучше:

BFE>>Никакой: никаких голых указателей — в цивилизованной программе это просто неприлично.
A>Ухтыжка.
Экспрессивная гипербола применена для выражения полной убеждённости.

A>Указатели как концепция в CS есть, а использовать их нельзя.

Можно, но не прилично.

A>Зря ее лобастые ботаники придумывали, надо отменять.

Про отмену я ничего не писал — не придумывайте. Хорошо, когда язык предоставляет все уровни абстракций и все виды парадигм программирования.

A> Может, ты этот свой совет как-то сузишь, а?

Нет. Зачем? В нормальной программе все указатели обёрнуты в классы, которые предоставляют функциональность специфичную для данного вида указателей.
А уж вот такое:
void fun1(const char* const* const test1)
{
    std::cout << test1[0];
}

вообще быть не должно. Это должно быть что-то вида:
template<std::size_t N>
void fun1(const std::array<std::string_view, N>& test1)
{
    std::cout << test1[0];
}

— исправлено: добавил амперсанд.

A>Что-то там про передачу владения, интерфейсы или еще что?

Какие проблемы с передачей владения, интерфейсами или еще что?