25.07.2017 Views

Intro-CSharp-Book-v2015

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

848 Въведение в програмирането със C#<br />

за да извършат различните задачи. Понякога това налага несвързани<br />

логически данни да се обединяват за точно такива методи. Използването<br />

на слаба кохезия (weak cohesion) е вредно и трябва да се избягва!<br />

Слаба свързаност на отговорностите – пример<br />

Ето един пример за клас, който има слаба свързаност на отговорностите<br />

(weak cohesion):<br />

public class Magic<br />

{<br />

public void PrintDocument(Document d) { ... }<br />

public void SendEmail(string recipient,<br />

string subject, string text) { ... }<br />

public void CalculateDistanceBetweenPoints(<br />

int x1, int y1, int x2, int y2) { ... }<br />

}<br />

Добри практики за свързаност на отговорностите<br />

Съвсем логично силната свързаност е "добрият" начин на писане на код.<br />

Понятието се свързва с по-прост и по-ясен сорс код – код, който по-лесно<br />

се поддържа и по-лесно се преизползва (поради по-малкия на брой задачи,<br />

които той изпълнява).<br />

Обратно, при слаба свързаност всяка промяна е бомба със закъснител,<br />

защото може да засегне друга функционалност. Понякога една логическа<br />

задача се разпростира върху няколко модула и така промяната й е потрудоемка.<br />

Преизползването на код също е трудно, защото един компонент<br />

върши няколко несвързани задачи, и за да се използва отново, трябва да<br />

са на лице точно същите условия, което трудно може да се постигне.<br />

Функционално обвързване (coupling)<br />

Функционално обвързване (coupling) описва най-вече до каква степен<br />

компонентите / класовете зависят един от друг. Дели се на функционална<br />

независимост (loose coupling) и силна взаимосвързаност (tight<br />

coupling). Функционалната независимост обикновено идва заедно със<br />

слабата свързаност на отговорностите и обратно.<br />

Функционална независимост (loose coupling)<br />

Функционалната независимост (loose coupling) се характеризира с това, че<br />

единиците код (подпрограма / клас / компонент) общуват с други такива<br />

през ясно дефинирани интерфейси (договори) и промяната в<br />

имплементацията на един компонент не се отразява на другите, с които той<br />

общува. Когато пишете програмен код, не трябва да разчитате на вътрешни<br />

характеристики на компонентите (специфично поведение, неописано в<br />

интерфейсите).

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!