Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Умеете ли Вы писать код без ошибок? (http://forum.oszone.net/showthread.php?t=219277)

Eksworden 30-10-2011 13:43 1784893

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

Delirium 30-10-2011 16:27 1785047

код без ошибок не умеет писать никто.Абсолютно никто. Но для начала, для новичков, весь код можно обрамлять через try...catch... Т.е. в случае ошибки программы не вылетает, а выдает заранее сформированное сообщение об ошибке. Таким образом выявляется 90% ошибок программы.
А впоследствии, когда приходит опыт, уже знаешь, куда смотреть, где что проверять и т.д. Хотя, как говорится, "100%-ную защиту от дурака" создать тяжело. Всегда найдутся те, кто нажмет что то так, как, по твоему мнению, сделать невозможно :)

PhilB 30-10-2011 21:01 1785237

Цитата:

Цитата Eksworden
синтаксических ошибок или ошибок в ходе компиляции »

Эти ошибки, как правило, в ступор вводят тех, кто в должной мере не знает язык, на котором пишет (как правило, новички, или наоборот те, кто давно на нем не писал). В очень редких случаях они могут указывать на ошибки проектирования, но как правило, просто ляпы по невнимательности, на их исправление тратиться ничтожная доля времени.
Методика проверки - скомпилировать:)
Цитата:

Цитата Eksworden
с крешами или зависаниями »

От них никто не застрахован. 100% защиты точно не будет, поскольку пользователь, в отличие от программиста, думает по-другому, из-за этого, как правило, креши и бывают.
Основная методика защиты:
1. проверка корректности входных данных
2. проверка доступности ресурсов (например, доступность файла)
3. проверка указателей на NULL (и, как оборотная строна, присвоение NULL всем указателям, которые пусты)
4. проверка алгоритмов на сходимость
Хорошее средство - внимательное чтение кода.:)

Вроде основное сказал, вспомню еще - добавлю.:)

Iska 31-10-2011 00:40 1785387

Я бы добавил ещё одно: проверка предельных случаев.

El Scorpio 31-10-2011 03:15 1785420

Цитата:

Цитата Eksworden
Используете ли вы какие-то методики или правила написания кода, что бы избежать ошибок при работе Вашей программы? »

Методика номер 1 для C++ - никогда не работать со строками через "символьные указатели"

Eksworden 31-10-2011 11:13 1785555

Цитата:

Delirium: код без ошибок не умеет писать никто. Абсолютно никто.
"Никогда не говори: никогда" ;)

Благодарю Вас за ответы. Особенно мне понравился ответ PhilB. Сразу чувствуется, что он имел дело с этим в своей повседневной работе. Iska "проверка предельных случаев" - это профессионально.
Не могли бы Вы подсказать, какие ошибки проектирования наиболее часто встречаются и как их можно "отловить"?

XPEHOMETP 31-10-2011 13:16 1785647

Оййй! Если бы все знали заранее, какие ошибки всегда встречаются, и как их отловить, то программирование было бы плевым занятием!

PhilB 31-10-2011 18:43 1785947

Насчет крешей и зависания, добавлю:
1. Не использовать многопоточное программирование без четкого обоснования, что это дествительно нужно.
2. В каждом языке есть свои особенности, влияющие на стабильность. (То что в си приводит к к крешу, в php может оказаться всего лишь "notice").

Насчет ошибок проектирования.
Есть понятие антипаттерн , описывающее многие распрастраненные ошибки.

Eksworden 31-10-2011 20:10 1786001

Цитата:

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

Любезный 31-10-2011 23:04 1786102

Книжка по теме:

http://www.books.ru/books/kak-ne-nad...--5986-205269/

Когда прочёл, понял - от С++ лучше держаться подальше.

El Scorpio 01-11-2011 05:16 1786215

Цитата:

Цитата Любезный
Книжка по теме:
http://www.books.ru/books/kak-ne-nad...--5986-205269/
Когда прочёл, понял - от С++ лучше держаться подальше. »

Когда прочёл описание книжки, понял, что от неё лучше держаться подальше :lol:

PhilB 01-11-2011 20:14 1786736

Цитата:

Цитата Любезный
Когда прочёл, понял - от С++ лучше держаться подальше. »

Боюсь даже спрашивать, к чему надо держаться поближе. Я б вообще бы сказал, что самый правильный язык haskell. Но как-то на нем мало, кто пишет, как ни прискорбно. И использовать его в коммерческих проектах пока не рискую.

К вопросу а шаблонах проектирования.
Ну, вообще, шаблоны проектирования - эта систематизация основных идей.
Когда я сам познакомился с этим понятием, быстро обнаружил, что немалую часть я уже использовал, некоторую часть использовал немного по-другому. Они играют вспомогательную роль при проектировании и, являясь лишь приемами, предлагают архитектору приложения некоторые идеи. Это не методы, а только идеи. Существует масса подходов к проектированию, каждый архитектор исопользует свой. А вообще, проектирование - дело творческое. И нельзя его загнать в рамки. Главное - осмысление предметной области на концептуальном ур-е. :)
Если хотите подробности, читайте: Э. Гамма Р. Хелм Р. Джонсон Дж. Влиссидес "Приемы объектно-ориентированного проектирования". Особенно, вводный раздел.
Помимо ООП (который хорош для прикладных приложений), существуют другие подходы, о них тоже нельзя забывать.


Время: 22:16.

Время: 22:16.
© OSzone.net 2001-