Я решил это сам, используя обходной путь:
Я добавил дополнительный слой и выбрал только данные с пропущенными значениями. Затем я добавил дополнительный элемент легенды, используя tm_add_legend.
data(World, metro)
# put population size pop2020 to NA for some cities
metro$pop2020[10:300] <- NA
tm_shape(World) + tm_fill()+
tm_shape(metro) +
tm_symbols(
size = "pop2020",
col = "black",
title.size = "subtitle",
legend.size.is.portrait=TRUE) +
tm_shape(metro[is.na(metro$pop2020),]) +
tm_dots(shape=4, size = 0.5, border.lwd = 0.5) +
tm_layout(legend.bg.color = "gray",
legend.frame = "black") +
tm_add_legend(type="symbol", shape =4, labels = "not available", size = 0.5, border.lwd = 0.5, col = "black")
Я думаю, что более полезно, чем хранение журнала отдельных ошибок удостоверяется, что Вы уходите с реальным пониманием того, почему это была ошибка во-первых. Большинство ошибок происходит от отсутствия понимания об одной вещи или другом, корректном, что понимание и Вы устраняете весь набор потенциальных ошибок в будущем. Если бы я зарегистрировал бы что-нибудь, что это было бы тем, что я извлек из опыта, который я не знал прежде, не специфические особенности ошибки, которая была сделана, который, вероятно, будет иметь ограниченную полноценность, когда Вы оглянетесь назад на него позже.
Это только полезно, если Вы на самом деле бдительны с отслеживанием и рассмотрением. Когда я работал над командой, неважно, насколько зарегистрированный, что, например, наши серверы в продуктивной среде были natted и не смогут разрешить свои собственные доменные имена или общедоступные IP-адреса, каждые 6 месяцев, я получил бы вызов в 4:00 от команды развертывания или команды разработчиков, что новый разработчик был ответственен за, и они или забыл или не знал.
Я помню конкретного инженера, который был ответственен за развертывание, и у него были бумажные контрольные списки, мы создали его инструменты развертывания, которые вынудили его записать свой контрольный список, все же он будет, всегда забывал устанавливать строку подключения (приводящий к телефонному вызову 4:00). Точка, это только стоит того если Ваша попытка использовать его бдительно.
Я нашел лучший способ использовать, это путем реализации правил в анализатор кода как fxcop.
добавьте последнего к соответствующему контрольному списку и обращайтесь к нему так же часто как соответствующий
Да, отслеживание Ваших персональных ошибок выгодно. Обратитесь к SEI для многочисленных точек данных (вот тот наугад). Одна такая методология является Персональным программным процессом (PSP). Это слишком длинно для входа здесь, но здесь является книгой об этом. Существует также эта бесплатная публикация SEI по PSP.
Если Вы передумали относительно SEI и думаете Гибкие, способ пойти, Вы, вероятно, позволите сократить расход горючего из книги как Чистый Код: Руководство Гибкого Мастерства программного обеспечения (веб-сайт издателя).
Нижняя строка: дисциплинированный разработчик = хороший, недисциплинированный разработчик = плохо.
Я думаю, отслеживая ошибки, может стоить, но по моему опыту это помогает много категоризировать их на некотором уровне.
Каждый программист собирается сделать достаточно ошибок в течение их карьеры для заполнения энциклопедии. Если Вы делаете огромный контрольный список из всех них затем, что Вы никогда не собираетесь получать любое кодирование, сделанное, потому что Вы будете в конечном счете проводить все свое время, пробегаясь через Ваш контрольный список. Так: категоризируйте свои ошибки в некотором роде, который имеет смысл Вам так, можно стрелять через список, смотрящий на самые важные ошибки для вида кода, Вы в настоящее время продолжаете работать.
Кроме того, для добавления к вышеупомянутому до того, что собраться:
Я также хотел бы задать вопрос того, сколько времени потребуется, чтобы точно отслеживать ошибки, и если то время могло бы быть лучше проведено непосредственно на улучшении программного обеспечения вместо этого. Если Вы можете сделать это за минимальное количество времени и можете вернуться к своим записям для предотвращения будущих ошибок, это может быть ценно. В конечном счете, хотя, я думаю, что будет лучше придерживаться списка абсолютно высокого уровня частых ошибок, Вы делаете.
Вместо того, чтобы сохранить журнал будущих ошибок, возможно, Вы могли рассмотреть свою bugtracker историю и попытаться найти общие типы ошибок, которые продолжают происходить.
Я так вдохновлен, я думаю, что попробую это завтра.
Я искал бы тенденции или подобные типы ошибок, которые имеют тенденцию повторяться. После того как Вы знаете о типах ошибок, которые Вы совершаете, можно быть внимательными для них, или можно изменить стиль кодирования для предотвращения их.
Как пример, я работал очень тесно со своим коллегой в предыдущей жизни. Однажды я был промежуточным через свое первое предложение, объяснив некоторое нечетное поведение, и он прервал, "увеличьте свой счетчик". Сегодня я все еще перепроверяю свои счетчики цикла!
"Какую информацию, связанную с моими ошибками, я должен отслеживать то, так, чтобы я мог улучшиться как программист?"
Считайте других людей блоги. Запишите свое собственное. Вы не должны публиковать его. Но действительно необходимо превратить каждую ошибку в историю.
Не топите это в метаданных. Это не поддается базе данных или даже средству отслеживания ошибки. Ошибка является историей, где кто-то сделал плохой выбор и восстановился с него.
Вот Ваша схема.
Необходимо также записать успехи почти в той же форме.
Когда в сомнении смотрят кино. Серьезно. Изображает столкнувшийся с выбором, сделайте ошибки и восстановитесь с тех ошибок. Тот сюжет является сущностью драмы. Ошибка является тем же самым.
Будьте осторожны, что Вы регистрируете. Не каждая плохая ситуация является ошибкой. Некоторые ситуации неизбежны или до сих пор вне Вашего управления, что ничто не может делаться с этим.
Плохое планирование чужой части, которая помещает Вас в панический режим, не является Вашей ошибкой. Можно ли придирчиво зарегистрировать всех ошибки else, но какой смысл? Если Вы отслеживаете то, что делают другие люди, необходимо искать терапию.
Плохо планирование, которое предоставляет несоответствующий бюджет, расписание или коммуникацию об изменениях, может быть составной проблемой.
Задним числом (который всегда является 20/20) Вы видите решение, которое было неправильным. Однако в то время, это было основано на наилучшей имеющейся информации. Это не ошибка. Любое предложение, которое начинается, "Если мы знали это X.." бесполезно для анализа ошибки. Можно попытаться записать контрольный список всех вещей, которые необходимо знать в следующий раз, когда Вы принимаете то решение. Но в следующий раз, Вы не будете делать точно, что решение и некоторая другая информация поднимут пропавших без вести.
Я думал то же самое. Пока я держу небольшую таблицу с исправленными мною ошибками. Цель этого - узнать о наиболее распространенных ошибках.
Надеюсь, я начну замечать закономерности и избегать повторения типичных ошибок снова и снова.
Я считаю, что это делает мою работу более интересной, вероятно, потому, что я аналитик, которому нравится собирать данные и информацию в структурированном виде.
Вы должны попытаться связать ошибки с использованием неадекватных инструментов. , привычки, методы или знания . В большинстве случаев вы обнаружите, что раньше можно было обнаружить ошибку. Мне приходят в голову такие вещи, как безопасность типов, модульное тестирование, проверка кода, стандарты кодирования, лучший дизайн API, лучшая документация и рабочая среда.