Высокая сплоченность и параллелизм - противоречат ли они интересам? - PullRequest
1 голос
/ 16 сентября 2010

Я читал «Чистый код» Роберта Мартина, в котором он упоминает о высокой степени связности кода:

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

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

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

1 Ответ

1 голос
/ 16 сентября 2010

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

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

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

...