Высокая сплоченность и параллелизм - это противоречивые интересы?

StackOverflow https://stackoverflow.com/questions/3723563

Вопрос

Я читал чистый код Роберта Мартина, и в том, что он упоминает о том, что код, являющийся очень сплоченным:

Классы должны иметь небольшое количество переменных экземпляров. Каждый из методов класса должен манипулировать одному или несколькими из этих переменных. В целом, тем больше переменная метод манипулирует тем более сплоченным, что метод является его классом. Класс, в котором каждая переменная используется каждым способом, максимально COHEIVEMETHOD является максимально сплоченным

Но когда мы пытаемся написать одновременный код, мы стремимся ограничить объем переменных к одному методу, чтобы избежать состояния расы. Но это приводит к коду, которое наименее связано.

При разработке приложения / класса, что вы предпочитаете - сплоченность или параллелизм?

Это было полезно?

Решение

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

Добавьте к тому, что проблемы с резьбой являются одними из худших наихудших, есть для отладки, и вы не должны компромитировать ваш дизайн для параллелизма, чтобы соответствовать вашему представлению о том, что кто-то написал в книге о сплоченности. Опять же, я не стучим Мартин ... Я уверен, что он скажет вам то же самое. В конце концов, он признает, что почти все на континууме в большинстве его написания.

Я не уверен, что вы уделяете акцент вполне правильное место, хотя (может быть просто тем, как я читаю ваш вопрос). Мартин не говорит, что вы должны сделать как можно больше переменных на уровне класса. Он говорит о переменных уровнях класса, сколько вы используете? Если вы продвигаете переменные, вам не нужно, вы, возможно, не получаете более высокую сплоченность ... Вы можете получить более жесткую муфту.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top