Что некоторые хорошие стратегии состоят в том, чтобы исправить ошибки, поскольку код становится более сложным?

Попробуйте использовать: before и: after. Один вставляет текст после визуализации HTML, другие вставки перед визуализацией HTML. Если вы хотите заменить текст, оставьте содержимое кнопки пустым.

В этом примере задается текст кнопки в соответствии с размером ширины экрана.

<meta name="viewport" content="width=device-width, initial-scale=1">

<style>
  button:before {
    content: 'small screen';
  }
  @media screen and (min-width: 480px) {
    button:before {
      content: 'big screen';
    }
  }
</style>
<body>
  <button type="button">xxx</button>
  <button type="button"></button>
</body>

Текст кнопки:

1) с: перед

большой экранxxx

большой экран

2) с: после

xxxbig screen

большой экран

17
задан Michael Myers 13 February 2009 в 15:09
поделиться

14 ответов

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

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

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

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

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

25
ответ дан 30 November 2019 в 10:10
поделиться

Вы автоматизация Ваших тестов ? Если Вы не делаете, Вы - регистрация, создающая ошибки, не находя их.

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

Вы модульные тесты записи ? В противном случае Вы - регистрация для длинных сеансов отладки, когда тест перестал работать.

Вы пишущий Вашу единицу тесты сначала ? В противном случае Ваши модульные тесты будут тверды записать, когда Ваши единицы будут сильно связаны.

Вы рефакторинг беспощадно? В противном случае каждое редактирование станет более трудным и более вероятным представить ошибки. (Но удостоверьтесь, что у Вас есть хорошие тесты, сначала.)

, Когда Вы исправляете ошибку, Вы фиксация всего класса ? Только исправьте ошибку; только исправьте подобные ошибки всюду по своему коду; измените игру, таким образом, Вы никогда не можете создавать такую ошибку снова.

15
ответ дан 30 November 2019 в 10:10
поделиться
  1. существует два способа записать безошибочные программы; только третьи работы. ~Alan J. Перлис

  2. единственный путь к ошибкам произойти в программе, будучи помещенным там автором. Никакие другие механизмы не известны. Программы не могут получить ошибки путем заседания с другими ошибочными программами. ~Harlan Mills

5
ответ дан 30 November 2019 в 10:10
поделиться

Очевидно, ошибки являются грандиозным предприятием любому программисту. Просто просмотрите список вопросов на Переполнении стека, чтобы видеть, что это проиллюстрировало.

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

3
ответ дан 30 November 2019 в 10:10
поделиться

Ошибки являются грандиозным предприятием всем. Я всегда находил что, чем больше я программирую, тем больше я узнаю о программировании в целом. Я съеживаюсь в коде, я записал несколько лет обратно!! Я начал как человека, увлеченного своим хобби, и любил его так, что я учился в техническом колледже для получения основной Разработки Информатики (я нахожусь в свой заключительный семестр). Это вещи, которые я изучил:

  1. я занимаю время для фактической разработки то, что я собираюсь записать и зарегистрировать дизайн. Это действительно устраняет много проблем по линии. Прост ли дизайн так же как записывающий несколько точек на том, что я собираюсь записать или полноценное моделирование UML (:() не имеет значения. Это - ясность мысли и цели и наличия материала для оглядываний назад на то, когда я возвращаюсь к коду через некоторое время тот вопрос больше всего.

  2. то, В каком языке я пишу, сохраняя мой код простым и читаемым, важно. Я думаю, что это чрезвычайно важно не для законченного, усложняют код и в то же время не к, упрощают его. (Трудно извлеченный урок!!)

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

  4. Изучение подчиненных деталей языка помогает мне сохранить свою ошибку кода бесплатной. Например, я узнал, что scanf () является злым в C!

  5. Другие уже прокомментировали дзэн записи тестов. Я хотел бы добавить, что необходимо всегда делать регрессионные тесты. (т.е. Напишите новый код, протестируйте все части своего кода, чтобы видеть, повреждается ли он)

  6. , Хранение умственного изображения кода время от времени трудно, таким образом, я всегда документирую свой код.

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

  8. Взгляды, прежде чем я кодирую и дисциплинируемый в том, что я пишу, являются другим решающим навыком. Я знаю людей, которые не форматируют их код так ее читаемое (Дрожь!).

  9. Чтение другого источника народов для изучения лучших практик хорошо. Вхождение в мой собственный список лучше!. При работе в команде должен быть единый набор их.

  10. не парализуются анализом. Тесты записи, затем кодируйте, затем выполните и протестируйте. Повторение промывки промывки!

  11. Обучение перечитать по моему собственному коду и расчесыванию его для ошибок важно. Улучшение моего арсенала отладки навыков было большими инвестициями. Я сохраняю их резкими, помогая моим одноклассникам регулярно исправлять ошибки.

  12. , Когда существует ошибка в моем коде, я принимаю его свою ошибку, не компьютеры и работу оттуда. Это - настроение, которое действительно помогает мне.

  13. А новая пара глаз помогает в отладке. Программисты склонны пропускать даже самые очевидные ошибки в своем собственном коде при исчерпании. Наличие кого-то для показа кода является большим.

  14. наличие кого-то, чтобы бросить идеи в и не быть оцененным важно. Я говорю со своей мамой (кто не программист), идеи броска в ней, и найдите решения. Она помогает мне возвратить свои идеи назад и вперед и совершенствовать их. Если она недоступна, я говорю со своей домашней кошкой.

  15. я не так больше препятствоваться ошибками. Я учился любить удалять ошибки почти так же как программирование.

  16. Используя управление версиями действительно помог мне управлять различными идеями, которые я получаю при кодировании. Это помогает уменьшить ошибки. Я рекомендую использовать мерзавца или любую другую систему управления версиями, которую Вы могли бы любить.

  17. , Поскольку Jay Bazzuzi сказал - Осуществляют рефакторинг код. Я просто добавил эту точку после чтения его ответа, для хранения моего списка завершенным. Весь кредит переходит к нему.

  18. Попытка написать повторно используемый код. Код повторного использования, и Ваш и из библиотек. Пользование библиотеками, которые являются ошибкой, бесплатной сделать некоторые общие задачи действительно, уменьшает ошибки (иногда).

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

Никакое преступление любому, кто не соглашается. Я надеюсь, что этот ответ помогает.

Примечание
Как другие Peter указал, используйте Объектно-ориентированное программирование, если Вы пишете большой объем кода. Существует предел разрядности кода, после которой это становится более твердым и более твердым справиться, если записано процедурно. Мне нравится процедурный за меньший материал, как проигрывание с алгоритмами.

5
ответ дан 30 November 2019 в 10:10
поделиться

Все другие ответы являются большими. Я добавлю две вещи.

  1. Управление исходным кодом обязательно . Я предполагаю, что Вы находитесь на окнах здесь. Сервер VisualSVN свободен и возможно 4 щелчка для установки. TortoiseSVN также свободен, и он интегрируется в Windows Explorer, обходя ограничения VS Express никаких дополнений. При создании слишком многих ошибок можно вернуться код и запуститься. Без управления исходным кодом это почти невозможно. Плюс Вы может синхронизировать Ваш код, если у Вас есть ноутбук и рабочий стол.
  2. Люди собираются рекомендовать много методов как поблочное тестирование, насмешка, Инверсия Управления, Разработки через тестирование, и т.д. Они - большие методы, но не пытаются переполнить все это в Вашу голову слишком быстро. Необходимо написать код для поправлений при написании кода, таким образом медленно работать эти методы в запись кода. Необходимо проверить, прежде чем Вы будете идти и идти, прежде чем можно будет работать.

Всего наилучшего в Ваших приключениях кодирования!

3
ответ дан 30 November 2019 в 10:10
поделиться

Это - общая вещь новичка. Поскольку Вы получаете больше опыта, конечно, у Вас все еще будут ошибки, но их будет легче найти и зафиксировать, потому что Вы изучите, как сделать Ваш код более модульным (так, чтобы изменение одной вещи еще не имело волновых эффектов везде), как протестировать его, и как структурировать его для сбоя быстро, близко к источнику проблемы, а не в некотором произвольном месте. Одна очень простая, но полезная вещь, которая не требует, чтобы сложная инфраструктура реализовала, состоит в том, чтобы проверить исходные данные ко всем функциям, которые имеют нетривиальный precondtions с, утверждает. Это несколько раз сохраняло меня в случаях, где я иначе стал бы странным segfaults и произвольное поведение, которое будет почти невозможно отладить.

2
ответ дан 30 November 2019 в 10:10
поделиться

Если бы ошибки не были проблемой затем, то я смог бы записать 100 000 программ строки через 10 минут!

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

Да: это - центральная проблема, даже единственная проблема (для любого достаточно комплексного определения 'ошибки').

2
ответ дан 30 November 2019 в 10:10
поделиться

Ошибки характерны для всех - профессионал или нет.

, Чем больше и более распределенный проект, тем более осторожный должен быть. Один взгляд на любую базу данных ошибки с открытым исходным кодом (исключая: https://bugzilla.mozilla.org / ), подтвердит это для Вас.

промышленность программного обеспечения развилась различный стили программирования и стандарты , который, когда используемое право, сделайте неверный код легче определить или ограниченный в его влиянии.

Поэтому обучение имеет очень положительное относительно качества кода... Но в конце дня, ошибки все еще крадутся через.

2
ответ дан 30 November 2019 в 10:10
поделиться

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

  1. Сохраняют каждую функцию, делающую одну вещь. Будьте подозреваемым в функции больше, чем, скажем, 10 строк долго. Если Вы думаете, что можно повредить его в две функции, Вы, вероятно, должны. Что-то, что поможет Вам управлять этим, называет Ваши функции согласно точно, что они делают. Если Вы находите, что Ваши имена являются длинными и громоздкими затем, Вы функционируете, вероятно, делает слишком много вещей.

  2. Превращают волшебные строки в константы. Таким образом, вместо использования:

    люди ["мама"]

использование вместо этого

var mom = "mom";
people[mom]
  1. Дизайн Ваши функции, чтобы или сделать что-то (команда) или получить что-то (запрос), но не оба.

чрезвычайно короткое и удобоваримое взятие на ООП здесь http://www.holub.com/publications/notes_and_slides/Everything.You.Know.is.Wrong.pdf . Если Вы получаете это, Вы имеете суть ООП и вполне откровенно перед большим количеством профессиональных программистов.

2
ответ дан 30 November 2019 в 10:10
поделиться

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

программисты Ниже среднего склонны создавать путь больше ошибок.

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

1
ответ дан 30 November 2019 в 10:10
поделиться

Противные ошибки происходят со всеми от профессионалов людям, увлеченным своим хобби. Действительно хороших программистов просят разыскать действительно противные ошибки. Это - часть задания. Вы будете знать о создании его как разработчик программного обеспечения, когда Вы уставились на противную ошибку в течение двух дней, и в разочаровании Вы кричите, "Кто записал это дерьмо!?!?"... только для понимания этого было Вами. :-)

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

Однако вот несколько вещей, которые можно сделать:

  1. А хороший отладчик неоценим. Часто необходимо ступить через строку кода с методической точностью для выяснения то, что пошло не так, как надо.
  2. Использование собравший "мусор" язык, такой как Python или Java, если это имеет смысл для Вашего проекта. GC поможет Вам сфокусировать на создании вещей работу вместо того, чтобы увязнуть путем раздражения ошибок памяти.
  3. , Если Вы пишете C++, учитесь любить RAII.
  4. Запись много кода. Программное обеспечение является своего рода видом искусства. Много практики сделает Вас лучше в нем.

Добро пожаловать в Переполнение стека!

1
ответ дан 30 November 2019 в 10:10
поделиться

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

1
ответ дан 30 November 2019 в 10:10
поделиться

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

самая популярная организационная парадигма, кажется, Объектно-ориентированное программирование , если можно разломать логику на небольшие единицы, которые могут создаваться и использоваться друг независимо от друга, затем Вы найдете ошибки намного менее болезненными, когда они произойдут.

0
ответ дан 30 November 2019 в 10:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: