Главная - Литература

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 [248] 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294

Листинг 31-61. Пример выделения комментария с помощью двух пустых строк (Java)

комментарий О

CodeStatementZero; CodeStatementOne;

комментарий 1

CodeStatementTwo; CodeStatementThree;

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

31.7. Размещение методов

ЛвдекбШй»й есшка О доку- Методы состоят из отдельных операторов, данных, управ-ментйровший методов см тй- -ющих структур, комментариев - всех тех элементов, ко-раздвл «Комментирована «е- торые обсуждались в остальных частях этой главы. В дан-тодое» ртш D промассе ном разделе рассмотрены принципы форматирования, от-создашя метода см. раздел 9Л. носящиеся исключительно к методам. О разнице между хорошими и

ПЛОХИМИ методами см. главу 7. Используйте пустые строки для разделения составных частей метода Оставьте пустые строки между заголовком метода, объявлениями данных и именованных констант (если они есть) и телом метода.

Используйте стандартный отступ для аргументов метода Для форматирования заголовка метода можно задействовать те же, что и раньше, варианты форматирования: отсутствие определенного форматирования, форматирование в конце строки или стандартные размеры отступов. Как и в большинстве других случаев, стандартные отступы становятся наилучшим решением с точки зрения аккуратности, единообразия, удобства для чтения и исправления. Листинг 31-62 содержит два примера заголовков методов без определенного форматирования:

Листинг 31-62. Примеры заголовков методов,

не использующих определенного форматирования (С++)

bool ReadEmployeeData(int maxEmployees,EmployeeList *employees, EmployeeFile *inputFile,int *employeeCount,bool *isInputError)

void InsertionSort(SortArray data,int firstElement,int lastElement)

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



В качестве другого подхода к форматированию заголовка метода можно предложить форматирование в конце строки, обычно выглядящее неплохо. В листинге 31-63 приведены те же заголовки, отформатированные по-другому:

Листинг 31-63. Примеры заголовков методов

с посредственным форматированием в конце строки (С++)

bool ReadEmployeeData( int maxEmployees,

EmployeeList *employees,

EmployeeFile *inputFile,

int *employeeCount,

bool *isInputError )

0 приш-

нении параметров методов см. раздел 7.5.

void InsertionSort( SortArray data,

int firstElement,

int lastElement )

Этот подход аккуратен и эстетически привлекателен. Его проблема в том, что он требует больших усилий при сопровождении, а сложные в сопровождении стили в результате вовсе не сопровождаются. Допустим, имя функции ReadEmp-

loyeeDataQ изменится на ReadNewEmployeeDataQ. Это нарушит выравнивание первой строки относительно остальных 4-х строк. Вам придется переформатировать 4 строки списка параметров, выравнивая их относительно новой позиции maxEmployees, вызванной более длинным именем функции. Вам может даже не хватить места с правой стороны экрана, поскольку элементы и так уже далеко сдвинуты вправо.

Примеры, приведенные в листинге 31-64, отформатированы с применением стандартных отступов. Они выглядят также эстетически привлекательно, но их сопровождение требует гораздо меньше усилий.

Листинг 31-64. Примеры заголовков методов, содержащих отступы стандартного размера (С++)

public bool ReadEmployeeData( int maxEmployees, EmployeeList *employees, EmployeeFile *inputFile, int employeeCount, bool *isInputError

public void InsertionSort( SortArray data, int firstElement, int lastElement



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

Этот стиль можно использовать в Visual Basic, хотя при этом потребуются символы продолжения строки (листинг 31-65):

Листинг 31-65. Пример заголовков методов, содержащих

стандартные отступы, удобные для чтения и сопровождения (Visual Basic)

- Символ « » используется как признак переноса строки.

l-Public Sub ReadEmployeeData (

ByVal maxEmployees As Integer,

ByRef employees As EmployeeList,

ByRef inputPile As EmployeeFile,

ByRef employeeCount As Integer,

ByRef isInputError As Boolean

31.8. Форматирование классов

в этом разделе рассказано об основных принципах размещения кода в классах. В первом подразделе вы узнаете, как отформатировать интерфейс класса, во втором - как оформлять реализацию класса, в последнем - мы обсудим организацию файлов и программ.

Форматирование интерфейсов классов

nipetpeemn ссылка О доку- Соглашение о размещении интерфейсов классов предусмат-итхщотт ттт см, «од- ривает перечисление членов класса в следующем порядке: раздел «Комментирование клас" 1. шапка с комментарием, содержащая описание класса и сов, файлов и программ» раа- любые примечания, касающиеся общих вопросов его ис-дела 32.5. О разнице «ежду пользования; хорошими и плохими классами

см. главу 6. 2. конструкторы и деструкторы;

3. открытые методы;

4. защищенные методы;

5. закрытые методы и члены-данные.

Форматирование реализаций классов

Реализации классов в общем случае могут размещаться в следующем порядке:

шапка с комментарием, описывающая содержимое файла с классом; данные класса; открытые методы; защищенные методы; закрытые методы.



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 [248] 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294



0.0035