Size: a a a

2020 September 27

RL

Rachel Lumin in pro.cxx
Вот код. Он не правильный
источник

LA

Liber Azerate in pro.cxx
Rachel Lumin
#include <iostream>
#include <math.h>

using namespace std;
int main()
{
int a,k=0,i=-1;
do
{
 cin>>a;
 i++;
 k=k+a;
}
while(a!=0);
cout<<k;
}
источник

RL

Rachel Lumin in pro.cxx
Ок
источник

eb

ed braed in pro.cxx
Господа, меня вот какой "архитектурный" вопрос волнует..
Предположим есть несколько объектов (не имеющие наследственной связи), которые должны как-то общаться между собой (например иметь ссылки друг на друга, или просто доступ к чужим данным, не суть важно).
Очевидно что в этом случае мы можем пойти как минимум 2мя путями:
1) Объявить некий публичный интерфейс к нужным данным.
2) Объявить некий приватный интерфейс и тупо начать френдить.

Оба варианта как по мне тухлые:
1 - создаёт опасность того, что этим интерфейсом воспользуется тот, кто им воспользоваться не должен.
2 - создаёт прям-таки железобетонные связи между классами, которые потом проблематично отслеживать и модерировать.
Ну и френды считаются мувитоном и признаком хреновой архитектуры, насколько я понимаю.

Собственно существует ли какая-то хитрость до которой я не догоняю, или проблема на самом деле надуманна?
источник

A

Anatoly in pro.cxx
ed braed
Господа, меня вот какой "архитектурный" вопрос волнует..
Предположим есть несколько объектов (не имеющие наследственной связи), которые должны как-то общаться между собой (например иметь ссылки друг на друга, или просто доступ к чужим данным, не суть важно).
Очевидно что в этом случае мы можем пойти как минимум 2мя путями:
1) Объявить некий публичный интерфейс к нужным данным.
2) Объявить некий приватный интерфейс и тупо начать френдить.

Оба варианта как по мне тухлые:
1 - создаёт опасность того, что этим интерфейсом воспользуется тот, кто им воспользоваться не должен.
2 - создаёт прям-таки железобетонные связи между классами, которые потом проблематично отслеживать и модерировать.
Ну и френды считаются мувитоном и признаком хреновой архитектуры, насколько я понимаю.

Собственно существует ли какая-то хитрость до которой я не догоняю, или проблема на самом деле надуманна?
Френды , это когда всё уже придумано до Вас, а переписывать не хочется или просто дорого )))
источник

A

Anatoly in pro.cxx
Отдельный источник данных предпочтительнее, тогда можно организовать модульную конструкцию и не сильно страдать в случае необходимости что то поменять
источник

eb

ed braed in pro.cxx
Anatoly
Френды , это когда всё уже придумано до Вас, а переписывать не хочется или просто дорого )))
Ну вот я тоже слышал что это скорее как костыль используется или как временная заплатка. Но уж точно не как архитектурный фундамент.
Но тогда вопрос ещё проще, как осуществить взаимосвязь объектов если не через публичный интерфейс?
источник

P

PRoSToC0der in pro.cxx
ed braed
Господа, меня вот какой "архитектурный" вопрос волнует..
Предположим есть несколько объектов (не имеющие наследственной связи), которые должны как-то общаться между собой (например иметь ссылки друг на друга, или просто доступ к чужим данным, не суть важно).
Очевидно что в этом случае мы можем пойти как минимум 2мя путями:
1) Объявить некий публичный интерфейс к нужным данным.
2) Объявить некий приватный интерфейс и тупо начать френдить.

Оба варианта как по мне тухлые:
1 - создаёт опасность того, что этим интерфейсом воспользуется тот, кто им воспользоваться не должен.
2 - создаёт прям-таки железобетонные связи между классами, которые потом проблематично отслеживать и модерировать.
Ну и френды считаются мувитоном и признаком хреновой архитектуры, насколько я понимаю.

Собственно существует ли какая-то хитрость до которой я не догоняю, или проблема на самом деле надуманна?
Dependency Injection?
источник

U

UsernameAK in pro.cxx
никто не знает где предложка метахлеба?)
источник

P

Pepe 🐸 in pro.cxx
ed braed
Господа, меня вот какой "архитектурный" вопрос волнует..
Предположим есть несколько объектов (не имеющие наследственной связи), которые должны как-то общаться между собой (например иметь ссылки друг на друга, или просто доступ к чужим данным, не суть важно).
Очевидно что в этом случае мы можем пойти как минимум 2мя путями:
1) Объявить некий публичный интерфейс к нужным данным.
2) Объявить некий приватный интерфейс и тупо начать френдить.

Оба варианта как по мне тухлые:
1 - создаёт опасность того, что этим интерфейсом воспользуется тот, кто им воспользоваться не должен.
2 - создаёт прям-таки железобетонные связи между классами, которые потом проблематично отслеживать и модерировать.
Ну и френды считаются мувитоном и признаком хреновой архитектуры, насколько я понимаю.

Собственно существует ли какая-то хитрость до которой я не догоняю, или проблема на самом деле надуманна?
1) почему это "опасность"? если интерфейс публичный то опасности быть не должно по определению

Второй вариант ужасный как раз
источник

P

Pepe 🐸 in pro.cxx
Можно еще придумать какое нибудь уродство с шаблоном, чтобы метод инстанцировался только в классе у которого правильный шаблонный параметр
источник

eb

ed braed in pro.cxx
Pepe 🐸
1) почему это "опасность"? если интерфейс публичный то опасности быть не должно по определению

Второй вариант ужасный как раз
Ну как же..
Если у нас есть некий публичное поле, да или даже геттер - всегда есть опасность использования его не по назначению..
Предположим, если геттер не константный, к неким внутренним данным объекта будет доступ у кого угодно помимо того объекта для которого он реально задумывался..
Т.е. есть опасность что на этот геттер кто-то потом ещё завяжется (чего по идеи не задумывалось).
источник

P

Pepe 🐸 in pro.cxx
ed braed
Ну как же..
Если у нас есть некий публичное поле, да или даже геттер - всегда есть опасность использования его не по назначению..
Предположим, если геттер не константный, к неким внутренним данным объекта будет доступ у кого угодно помимо того объекта для которого он реально задумывался..
Т.е. есть опасность что на этот геттер кто-то потом ещё завяжется (чего по идеи не задумывалось).
ну суть публичных методов в том что ты дизайнишь их так чтобы они не сломали никакие инварианты. То есть любой может их юзать без подробного знания внутренностей класса. (в отличие от френда, когда класс В имеет неограниченный доступ к классу А, и когда человек пишущий В (или редактирующий) не знает как работает А)
источник

P

Pepe 🐸 in pro.cxx
впрочем как я уже упомянул можно специализацию класса сделать
источник

V🇺

Vladislav 🇺🇸🚜🇷🇺... in pro.cxx
UsernameAK
никто не знает где предложка метахлеба?)
В личке Алекса?)
источник

CD

Constantine Drozdov in pro.cxx
ed braed
Господа, меня вот какой "архитектурный" вопрос волнует..
Предположим есть несколько объектов (не имеющие наследственной связи), которые должны как-то общаться между собой (например иметь ссылки друг на друга, или просто доступ к чужим данным, не суть важно).
Очевидно что в этом случае мы можем пойти как минимум 2мя путями:
1) Объявить некий публичный интерфейс к нужным данным.
2) Объявить некий приватный интерфейс и тупо начать френдить.

Оба варианта как по мне тухлые:
1 - создаёт опасность того, что этим интерфейсом воспользуется тот, кто им воспользоваться не должен.
2 - создаёт прям-таки железобетонные связи между классами, которые потом проблематично отслеживать и модерировать.
Ну и френды считаются мувитоном и признаком хреновой архитектуры, насколько я понимаю.

Собственно существует ли какая-то хитрость до которой я не догоняю, или проблема на самом деле надуманна?
Уже читал про passkey?
источник

CD

Constantine Drozdov in pro.cxx
Для ограничения вызова не обязательно приватить функцию, можно приватить создание ее аргумента
источник

SR

Square Root in pro.cxx
ed braed
Господа, меня вот какой "архитектурный" вопрос волнует..
Предположим есть несколько объектов (не имеющие наследственной связи), которые должны как-то общаться между собой (например иметь ссылки друг на друга, или просто доступ к чужим данным, не суть важно).
Очевидно что в этом случае мы можем пойти как минимум 2мя путями:
1) Объявить некий публичный интерфейс к нужным данным.
2) Объявить некий приватный интерфейс и тупо начать френдить.

Оба варианта как по мне тухлые:
1 - создаёт опасность того, что этим интерфейсом воспользуется тот, кто им воспользоваться не должен.
2 - создаёт прям-таки железобетонные связи между классами, которые потом проблематично отслеживать и модерировать.
Ну и френды считаются мувитоном и признаком хреновой архитектуры, насколько я понимаю.

Собственно существует ли какая-то хитрость до которой я не догоняю, или проблема на самом деле надуманна?
источник

ПК

Побитый Кирпич... in pro.cxx
ed braed
Господа, меня вот какой "архитектурный" вопрос волнует..
Предположим есть несколько объектов (не имеющие наследственной связи), которые должны как-то общаться между собой (например иметь ссылки друг на друга, или просто доступ к чужим данным, не суть важно).
Очевидно что в этом случае мы можем пойти как минимум 2мя путями:
1) Объявить некий публичный интерфейс к нужным данным.
2) Объявить некий приватный интерфейс и тупо начать френдить.

Оба варианта как по мне тухлые:
1 - создаёт опасность того, что этим интерфейсом воспользуется тот, кто им воспользоваться не должен.
2 - создаёт прям-таки железобетонные связи между классами, которые потом проблематично отслеживать и модерировать.
Ну и френды считаются мувитоном и признаком хреновой архитектуры, насколько я понимаю.

Собственно существует ли какая-то хитрость до которой я не догоняю, или проблема на самом деле надуманна?
1) проблема надуманна
источник

AD

Apache DOG™ in pro.cxx
Побитый Кирпич
log.Debug("Incoming metrics data");

это что нельзя в с++ сделать без макросов?
Без письма руками вряд ли
источник