русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Рекомендації по програмуванню


Дата додавання: 2015-01-08; переглядів: 981.


Головна мета, до якої потрібно прагнути, - отримати зрозумілу програму якомога простішої структури. Всі технології програмування направлені на досягнення саме цієї мети, оскільки тільки так можна добитися надійності програми і легкості її модифікації.

Створення програми треба починати з визначення її початкових даних і результатів. При цьому замислюються не тільки про сенс кожної величини, але і про те, яку множину значень вона може приймати. Відповідно до цього вибираються типи змінних.

Наступний крок - записати алгоритм рішення задачі на природній мові або із застосуванням узагальнених блок-схем. Другий варіант ефективніший. Якщо розробник не може сформулювати алгоритм, велика вірогідність того, що він погано продуманий. При цьому не потрібно детально описувати алгоритм на рівні окремих операторів. Опис алгоритму дозволяє детальніше осмислити завдання, знайти на ранній стадії деякі помилки, розбити програму на логічну послідовність блоків, а також забезпечити коментарі до програми.

При кодуванні програми необхідно пам'ятати про принципи структурного програмування: програма повинна складатися з чіткої послідовності блоків - базових конструкцій, кожна з яких має один вхід і один вихід. Конструкції можуть вкладатися, але не перетинатися.

Програма має бути “прозора”. Якщо яку-небудь дію можна запрограмувати різними способами, то перевага повинна віддаватися не найбільш компактному і навіть не найбільш ефективному, а зрозумілішому. Особливо це важливо тоді, коли пишуть програму одні, а супроводжують інші, що є широко поширеною практикою. «Непрозоре» програмування може спричинити величезні витрати, пов'язані з пошуком помилок при відладці.

Для запису кожного фрагмента алгоритму необхідно використовувати найбільш відповідні засоби мови. Наприклад, галуження на декілька напрямів за значенням цілої або рядкової змінної ефектніше записати за допомогою одного оператора switch, а не декількох операторів if. Для перегляду масиву краще користуватися циклом for або foreach. Оператор goto застосовують дуже рідко, наприклад, в операторі вибору switch або для примусового виходу з декількох вкладених циклів, а в більшості інших ситуацій краще використовувати інші засоби мови, такі як break або return.

Для організації циклів користуйтеся найбільш відповідним оператором. Цикл do застосовується тільки в тих випадках, коли тіло у будь-якому випадку потрібно буде виконати хоч би один раз, наприклад, при перевірці введення. При використанні циклів треба прагнути об'єднувати ініціалізацію, перевірку умови виходу і приріст в одному місці. При записі ітеративних циклів (у яких для перевірки умови виходу використовуються співвідношення змінних, що формуються в тілі циклу), необхідно передбачати аварійний вихід після досягнення заздалегідь заданої максимальної кількості ітерацій. Це підвищує надійність програми.

 

Безглуздо використовувати перевірку на рівність true або false:

bool busy;

if ( busy = = true ) { ... } // погано! Краще if ( busy )

if ( busy = = false ) { ... } // погано! Краще if ( !busy )

 

Слід уникати зайвих перевірок умов. Наприклад:

 

if ( а < b ) с = 1;

else if ( а > b ) с = 2;

else if ( а == b ) с = 3;

 

Замість цих операторів можна написати:

 

if ( а < b ) с = 1;

else if ( а > b ) с = 2;

else с = 3;

 

Або навіть так:

 

с = 3;

if ( а < b ) с = 1;

if ( а > b ) с = 2;

 

Якщо перша гілка оператора if забезпечує передачу управління, використовувати гілку else немає необхідності:

 

if ( i > 0 ) break;

// тут i <= 0

 

В деяких випадках умовна операція краще умовного оператора:

 

if ( z = = 0 ) i = j; else i = k; // краще так: i = z = = 0 ? j : k;

 

Необхідно передбачати друк повідомлень або генерацію виключення в тих точках програми, куди управління при нормальній роботі програми передаватися не повинно. Саме це повідомлення ви з великою вірогідністю отримаєте при першому ж запуску програми. Наприклад, корисно, якщо оператор switch має гілку default, що реалізовує обробку ситуації за умовчанням, якщо в ній перераховані всі можливі значення перемикача.

У програмі корисно передбачати реакцію на невірні вхідні параметри. Це може бути генерація виключення (переважно), друк повідомлення або формування ознаки результату з його подальшим аналізом. Повідомлення про помилку має бути інформативним і підказувати користувачеві, як її виправити. Наприклад, при введенні невірного значення в повідомленні має бути вказаний допустимий діапазон.

Укладайте потенційно небезпечні фрагменти програми в блок try, що перевіряється, і обробляйте хоч би виключення типу Exception, а краще - всі виключення, які можуть в нім виникнути, окремо.

Після написання програму слід ретельно відредагувати - прибрати непотрібні фрагменти, згрупувати описи, оптимізувати перевірки умов і цикли, перевірити, чи оптимальне розбиття на методи, і так далі. З першого разу без помарок хороший текст не напишеш, будь то твір, стаття або програма. Проте не слід намагатися оптимізувати все, що “попадається під руку”, оскільки головний принцип програміста той же, що і лікаря: “Не нашкодь!”.

Підходити до написання програми потрібно так, щоб її можна було у будь-який момент передати іншому програмістові. Корисно дати почитати свою програму кому-небудь з друзів або колег (а ще краще - ворогів або заздрісників) і в тих місцях, які вони не зможуть зрозуміти без усних коментарів внести їх прямо до тексту програми.

Навіть якщо супроводжуючим програмістів є автор програми, знатися через рік на погано документованому тексті сумнівне задоволення. Подальші поради стосуються коментарів і форматування тексту програми, що є невід'ємною частиною процесу програмування.

Програма, якщо вона використовується, живе не один рік, потреба в якихось її нових властивостях виявляється відразу ж після введення в експлуатацію, і супровід програми займає значно більше часу, чим її написання. Основна частина документації повинна знаходитися в тексті програми. Хороші коментарі написати майже так само складно, як і хорошу програму. Коментарі мають бути правильними пропозиціями без скорочень і з розділовими знаками.

Якщо коментар до фрагмента програми займає декілька рядків, розмістити його краще перед фрагментом, чим справа від нього, і вирівняти по вертикалі.

Вкладені блоки повинні мати відступ в 3-5 символів, причому блоки одного рівня вкладеності мають бути вирівняні по вертикалі. Форматуйте текст по стовпцях скрізь, де це можливо, це робить програму набагато зрозумілішою:

 

string but = "qwerty";

double ex = 3.1234;

int number = 12;

byte z = 0;

if ( done ) Console.WriteLine( "Сума ряду - " + у );
else Console.WriteLine( "Ряд розходиться" );:

if( x>= 0 && x < 10 ) у = t * x;

else if( x >= 10 ) у = 2 * t;

else у = x;

 

Для розділення методів і інших логічно закінчених фрагментів користуйтеся порожніми рядками або коментарем вигляду

 

//---------------------------------------------------------------------------

 

Позначайте кінець довгого складеного оператора, наприклад:

while ( true )

{

while ( х < у )

{

for(i=0; i<10; + + i )

{

for( j = 0; j<10; + + j )

{

// дві сторінки коду

} // end for ( j = 0; j < 10; ++ j )

} // end for ( i = 0; i < 10; ++ i )

} // end while ( x < у )

} // end while ( true )

 

Конструкції мови C# в основному сприяють хорошому стилю програмування, проте, і на цій мові можна написати заплутану, ненадійну, непривабливу програму, яку простіше переписати заново, чим внести до неї необхідні зміни. Тільки постійні тренування, самоконтроль і прагнення до вдосконалення допоможуть вам освоїти хороший стиль, без якого неможливо стати кваліфікованим програмістом.

 

 


<== попередня лекція | наступна лекція ==>
Клас Exception | Тіло класу


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн