Организация взаимосвязанных выражений


    Думаю, любому программисту, начинающему или профессионалу, достаточно часто приходится иметь дело с операторами, следующими в произвольном порядке. Кажется, что способ организации таких блоков кода не имеет значения. Но упорядоченность влияет на читабельность и, как следствие, на качество сопровождения. Главный принцип организации такого кода - это принцип схожести: располагайте взаимосвязанные действия вместе.
Приведу небольшой пример:

MarkertingData markertingData;
SalesData salesData; 
TravelData travelData;

markertingData.Compute();
salesData.Compute(); 
travelData.Compute(); 

markertingData.Print(); 
salesData.Print();  
travelData.Print();  

    Это пример плохого кода. При чтении приходится постоянно переключать внимание с одного объекта на другой. Если сгруппировать взаимосвязанные куски кода, код станет более читабельным и лёгким для восприятия:

MarkertingData markertingData;
markertingData.Compute();
markertingData.Print();

SalesData salesData;
salesData.Compute();
salesData.Print();

TravelData travelData;
travelData.Compute();
travelData.Print();


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


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


Комментариев нет:

Отправить комментарий