Здравствуйте, Silver_s, Вы писали:
I>>Слова близкие. И то и другое означает соединение. Отличаются результатом этого соединения — или сумма качеств участников, или принципиально новое качество.
S_>Тогда надо выяснить некоторые детали с этими понятиями.
S_>
S_>Cohesion is often contrasted with coupling, a different concept. Nonetheless high cohesion often correlates with loose coupling, and vice versa.
S_>
S_>Coupling is usually contrasted with cohesion. Low coupling often correlates with high cohesion, and vice versa.
Ну так обычно есть, но это не главное.
S_>Есть два модуля.
...
coupling это относительно зависимостей.
cohesion это относительно обязанностей.
если смешать обязанности то это вовсе не обязательно приведет к росту зависимостей.
и наоборот, рост зависимостей не обязательно приведет к росту обязанностей
но как правило зависимости тянут за собой обязанности, а обязанности тянут за собой зависимости.
А мне вобще почему-то не нравится идея противопоставлять эти два термина.
Лучше один вместо них — Clustering (но иерархическая и без циферок): http://en.wikipedia.org/wiki/Data_clustering
И соответственно появляется два вопроса:
1) Как кластеризация физически оформлена, и почему с ней удобнее.
2) По каким признакам кластеризуется. Ясно что их много, и по каждому признаку может быть не совпадающие варианты деления.
Хорошая кластеризация когда делили по наиболее актуальным признакам (ясно что они могут быть разные в разных задачах), и плюс когда кластеры совпадают для разных признаков.
I>cohesion это state or act of keeping/working together I>синоним — unity, отсюда понятно, почему di/ioc от MS называтся Unity
I>coupling — action of joining/combining
Ну и есть ли принципиальное различие между combining и working together ?
Это все вокруг одного и того же. Связность,связанность,сцепление, гранулярность(внутри одной гранулы у элементов связи сильнее чем между элементами разных гранул), кластеризация.
Кто-нибудь может сказать в чем отличае понятий Cohesion,Coupling в таком виде как они описаны в Wiki ?
В обоих случаях идет речь об отношениях элементов. В Coupling больше акцент в сторону отношений в виде dependency .
В Cohesion акцент больше в сторону сематники отношений (как близки по смыслу).
И еще Cohesion относительно связей внутри модуля, Coupling между модулями. Выглядит как смешивание мух с котлетами, кривоватые термины и понятия, нет?
Вот есть куча элементов их надо сгруппировать. Например, методы сгруппировать в классы, или классы в модули.
Так чтобы близкие классы оказались в одном модуле. В другом модуле другие близкие классы. Между классами в разных модулях близости нет.
Близость между классами может быть или из-за зависимостей, или близость семантическая — насколько похожие функции выполняют.
В обоих случаях внутри модуля между элементами сильные связи (хоть это Coupling назови, хоть Cohesion). А между разными модулями слабые.
On 18.07.2010 17:45, Ikemefula wrote:
> M>Единственное, я бы написал "сильно связных" вместо "сильно связанных" - > M>иначе у неподготовленного русскоязычного читателя будет словесный > M>сумбур: "сильно связанные", но "слабо сцепленные" — как это?
> Я бы вообще избегал слов связность и связанность, ибо почти всегда возникает путаница. > На мой взгляд соединение и сцепление гораздо лучше отражает специфику.
Мое мнение состоит в том, что мы имеем два термина, переводы которых на
русский язык очень схожи. Поэтому позиции "лучше" и "хуже" в данном
случае неизбежно скатываются к личному слабоаргументированному
субъективному предпочтению.
Единственный разумный выход в такой ситуации — договориться между собой
какие именно русские слова употреблять для обоих терминов и в дальнейшем
пропагандировать эти определения. Как видите, я избегаю собственной
позиции в данной проблеме, а просто занимаюсь подсчетом чужих
публикаций. При этом считаю, что печатное издание имеет намного больший
вес и авторитет, чем любой пост на форуме rsdn или другом ином.
Вместе с вашей ссылкой мы имеет четкую картину — в русскоязычной
литературе преобладает трактовка:
Здравствуйте, Ikemefula, Вы писали:
I>Слова близкие. И то и другое означает соединение. Отличаются результатом этого соединения — или сумма качеств участников, или принципиально новое качество.
Тогда надо выяснить некоторые детали с этими понятиями.
Cohesion is often contrasted with coupling, a different concept. Nonetheless high cohesion often correlates with loose coupling, and vice versa.
Coupling is usually contrasted with cohesion. Low coupling often correlates with high cohesion, and vice versa.
Есть два модуля.
В первом скопились классы сильно зависимые — один класс удалишь остальные перестанут компилироваться.
В другом модуле все классы абсолютно независимые, но по смыслу,назначению,функционалу очень похожие.
Здесь в одном случае высокий coupling в другом cohesion.
И правило: чтобы была хорошая архитектура нужно чтобы внутри модулей было одновременно(а можно и по отдельности) и высокий и coupling и высокий cohesion.
Если объединили классы по причине высокого cohesion, то coupling может быть и не высокий.
Если критерий объединения был — высокий coupling, то cohesion можно и не обеспечивать высокий, достаточно одного coupling чтобы классы ложить вместе в один модуль.
Так или нет? Или какую-то другую логику на это нацепили?
Здравствуйте, mazurkin, Вы писали:
>> coupling = связность >> cohesion = связанность
M>Преобладает где? В вашем уме? Я, так понимаю, должен поверить M>джентльмену на слово??
Не хочешь — не верь. Мне фиолетово.
M>В пользу своего варианта — я привел две книжные ссылки плюс ваша одна — M>всего три.
Здравствуйте, Ikemefula, Вы писали:
I>Может баннер рекламный развесить где попало "cohesion == cцепление, coupling == связанность " ?
Может баннер рекламный развесить где попало "Read in English!"?
И никакой путаницы.
Здравствуйте, lxa, Вы писали:
I>>Во многих книгах встречается путаница, особенно в переводных
lxa>Есть слово когезия. Согласен, "вражеское", но, может, использовать, чтобы уменьшить путаницу?
Когезия достаточно редкое слово, у него есть синоним — сцепление.
"дизайн программы должен базироваться на использовании множества сильно связанных компонентов, которые слабо сцеплены друг с другом, благодаря чему тестирование кода упрощается"
Очевидно, что правильный перевод должен быть
"дизайн программы должен базироваться на использовании множества сильно сцепленых компонентов, которые слабо связаны друг с другом, благодаря чему тестирование кода упрощается"
Здравствуйте, Ikemefula, Вы писали:
I>Очевидно, что правильный перевод должен быть
I>"дизайн программы должен базироваться на использовании множества сильно сцепленых компонентов, которые слабо связаны друг с другом, благодаря чему тестирование кода упрощается"
Чуть дальше путаница с reactive — proactive. Переведено как реактивный — превентивный в контексте тестирования.
Превентивное тестировани, сдается тавтология. Проактивное тестирование — это уже совсем другое дело.
Не понял идею. Гранулярность это в первую очередь неоднородность структуры.
cohesion это state or act of keeping/working together
синоним — unity, отсюда понятно, почему di/ioc от MS называтся Unity
coupling — having sex или action of joining/combining
I>>Может баннер рекламный развесить где попало "cohesion == cцепление, coupling == связанность " ?
D>но в википедии слева есть ссылки на это же понятие на других языках. Там фигурируют связность и связанность. Придется править википедию..
On 17.07.2010 17:23, Ikemefula wrote: > Во многих книгах встречается путаница, особенно в переводных > Может баннер рекламный развесить где попало "cohesion == cцепление, coupling == связанность " ?
Здравствуйте, mazurkin, Вы писали:
>> Во многих книгах встречается путаница, особенно в переводных >> Может баннер рекламный развесить где попало "cohesion == cцепление, coupling == связанность " ?
M>Вот мой старый пост на эту тему
M>http://rsdn.ru/forum/design/3245422.1.aspx
Здравствуйте, Silver_s, Вы писали:
I>>cohesion это state or act of keeping/working together I>>синоним — unity, отсюда понятно, почему di/ioc от MS называтся Unity
I>>coupling — action of joining/combining
S_>Ну и есть ли принципиальное различие между combining и working together ?
Есть, вот главное отличие от keeping/working together:
combine — to come to form a single thing or group
join — to become one.
На примере — joing a pipe — присоединить трубу.
Очевидно, две трубы соединенные вместе становятся одной трубой.
S_> И еще Cohesion относительно связей внутри модуля, Coupling между модулями. Выглядит как смешивание мух с котлетами, кривоватые термины и понятия, нет?
Ты их попутал Cohesion это относительно связей между модулями, т.е. сцепление. Coupling — это внутри модуля, т.е. соединение, связанность.
On 18.07.2010 17:14, Ikemefula wrote:
> у тебя вобщем то все наоборот
Да я и говорю, что согласен с переводом.
Единственное, я бы написал "сильно связных" вместо "сильно связанных" —
иначе у неподготовленного русскоязычного читателя будет словесный
сумбур: "сильно связанные", но "слабо сцепленные" — как это?
Здравствуйте, mazurkin, Вы писали:
M>Единственное, я бы написал "сильно связных" вместо "сильно связанных" — M>иначе у неподготовленного русскоязычного читателя будет словесный M>сумбур: "сильно связанные", но "слабо сцепленные" — как это?
Я бы вообще избегал слов связность и связанность, ибо почти всегда возникает путаница.
На мой взгляд соединение и сцепление гораздо лучше отражает специфику.
И в то же время, в определении слова join написано: синоним — to unite
I>Есть, вот главное отличие от keeping/working together: I>combine — to come to form a single thing or group I>join — to become one.
unity — the state or quality of being one;
Можно сказать это то что после выполнения combine получилось.
Это все к тому что сколько этими словами и их синонимами не играй, все равно cohesion,coupling это синонимы.
Есть в них некоторые нюансы, поэтому они и по-разному пишутся(разные слова).
Но пытаться на них навесить противоположный смысл, или их как-то сильно противопоставлять — это плохая затея.
Рано или позно, в том или ином месте все равно путаница возникнет.
А их противопоставляют когда говорят маленький coupling соответствует большому cohesion, и наоборот.
I>Ты их попутал Cohesion это относительно связей между модулями, т.е. сцепление. Coupling — это внутри модуля, т.е. соединение, связанность.
А по моему не я их попутал, а они уже давно были попутаны и запутаны
Здравствуйте, Silver_s, Вы писали:
S_>И в то же время, в определении слова join написано: синоним — to unite
Странно, у меня оксфордский и там такого синонима нет. Словарь синонимов остался на работе.
S_>Можно сказать это то что после выполнения combine получилось.
join, combine основная идея примерно такая — соединить две трубы и получится одна ТРУБА
S_>unity — the state or quality of being one;
а вот здесь совершенно иначе — соединить двух людей и получится не один человек(joing, combine), а СЕМЬЯ
т.е. unity дает новое качество, а joing/combine этого нового качества не дают
S_> Это все к тому что сколько этими словами и их синонимами не играй, все равно cohesion,coupling это синонимы.
Здравствуйте, Ikemefula, Вы писали:
S_>> Это все к тому что сколько этими словами и их синонимами не играй, все равно cohesion,coupling это синонимы. I>Ни в коем случае см. выше.
Ну не синонимы а очень близкие слова. Разницы между ними не больше чем между словами "сила" и "усилие" (это не синонимы все-таки).
Но если определить какие-то понятия в которых большая сила обычно соответствует маленькому усилию, а маленькое усилие соответствует большой силе. То такие же проблемы с путаницей возникнут.
Здравствуйте, Silver_s, Вы писали:
S_>Здравствуйте, Ikemefula, Вы писали:
S_>>> Это все к тому что сколько этими словами и их синонимами не играй, все равно cohesion,coupling это синонимы. I>>Ни в коем случае см. выше.
S_>Ну не синонимы а очень близкие слова. Разницы между ними не больше чем между словами "сила" и "усилие" (это не синонимы все-таки).
Слова близкие. И то и другое означает соединение. Отличаются результатом этого соединения — или сумма качеств участников, или принципиально новое качество.
Здравствуйте, Ikemefula, Вы писали:
I>Когезия достаточно редкое слово,
И это хорошо — не перепутаешь.
А для coupling все-таки более распространенный перевод — связность.
Здравствуйте, IB, Вы писали:
I>>Когезия достаточно редкое слово, IB>И это хорошо — не перепутаешь. IB>А для coupling все-таки более распространенный перевод — связность.
Вообще то связность это когезия, в лингвистике например.
4. Кент Бек, "Экстремальное программирование: разработка через тестирование"
"дизайн программы должен базироваться на использовании множества сильно
связанных компонентов, которые слабо сцеплены друг с другом, благодаря
чему тестирование кода упрощается"
Здравствуйте, mazurkin, Вы писали:
M>для вузов", изд-во Питер 2002
Питер вообще выкидываем, нормальных переводов не было никогда.
M>Итого 3:1
10:0
coupling связность = 657000 результатов.
coupling сцепление+зацепление+связанность ~20000 результатов.
Здравствуйте, Ikemefula, Вы писали:
I>Чуть дальше путаница с reactive — proactive. Переведено как реактивный — превентивный в контексте тестирования. I>Превентивное тестировани, сдается тавтология. Проактивное тестирование — это уже совсем другое дело.
Достоверно знаю, что в нескольких агентствах переводов за "перевод" proactive=проактивный (как и reactive=реактивный, если речь не про самолеты) бьют тапком по голове
D.K. << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Все на свете должно происходить медленно и неправильно...
Здравствуйте, Ikemefula, Вы писали:
I>coupling — having sex или action of joining/combining
При таком подходе есть буквальный перевод на русский — спаривание. Для cohesion наиболее буквальным, наверное, будет "спаянность" либо просто "когезия" (есть в русском языке такое слово, как ни странно).
... << RSDN@Home 1.2.0 alpha 4 rev. 1476 on Windows 7 6.1.7600.0>>
Здравствуйте, FR, Вы писали:
FR>В контексте темы кажется лучше всего подходят спаянность и сплоченность.
по мне так и "когезия" не плохо, для специального термина самое оно.
Здравствуйте, Ikemefula, Вы писали:
I>И что с того ? Это как то влияет на использование в лингвистике ?
Это влияет на использование в IT, которое к лингвистике не имеет никакого отношения.
Здравствуйте, mazurkin, Вы писали:
M>Хотя печатные издания вроде как должны цениться больше. Или их время прошло?
В печатных тоже больше coupling = связность, особенно в старых.
Здравствуйте, conraddk, Вы писали:
C>Достоверно знаю, что в нескольких агентствах переводов за "перевод" proactive=проактивный (как и reactive=реактивный, если речь не про самолеты) бьют тапком по голове
Ого, а что не так ? Нормальные слова вроде — реактивный, проактивный ?
Здравствуйте, Ikemefula, Вы писали:
I>Ого, а что не так ? Нормальные слова вроде — реактивный, проактивный ?
Я допускаю, что есть области, где эти слова уже либо устоялись, либо скоро будут (пример: "проактивная защита" похоже, уже с нами, никуда не деться).
Но во многих областях это совсем не так.
Простой пример из жизни завода: reactive maintenance.
"Реактивное обслуживание"?
Нет, "аварийный ремонт". То есть ремонт по факту аварии как реакция на происшествие.
Тапком бьют, потому что это проще всего — транскрибировать, не разбираясь, что же имелось в виду. А практически всегда есть более точное слово, которое передает суть характеристики.
D.K. << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Все на свете должно происходить медленно и неправильно...