Скачать 360.39 Kb.
|
Не трогайте мышь и отойдите от клавиатурыБерк Хуфнагель (Burk Hufnagel) Вы уже несколько часов работаете над некоей неподдающейся задачей, а решения все Не правда ли, знакомая ситуация? Никогда не думали, почему так происходит? Все дело в том, что когда вы пишете код, активна логическая часть вашего мозга, а творческая отключена. Она никак не сможет себя проявить, пока логическая сторона не сделает перерыв в работе. Вот вам пример из жизни. Я причесывал некий старый код и наткнулся на «любопытный» метод. Его задачей была проверка правильности формата времени в строке, который имел вид hh:mm:ss xx, где hh – это час, mm – минуты, ss – секунды, а xx имеет значение AM или PM (может не все читатели знают что это такое? :-). Метод содержал следующий код для преобразования двух символов (представляющих час) в число и проверки нахождения его в заданном диапазоне: try { Integer.parseInt(time.substring(0, 2)); } catch (Exception x) { return false; } if (Integer.parseInt(time.substring(0, 2)) > 12) { return false; } Тот же самый код появлялся еще дважды с соответствующими изменениями в смещении символов и верхней границе, чтобы проверить правильность минут и секунд. Заканчивался метод следующими строками, проверяющими AM и PM: if (!time.substring(9, 11).equals("AM") & !time.substring(9, 11).equals("PM")) { return false; } (Три отрицания это вынос мозга) Если Если приведенный код кажется слишком многословным и трудным для понимания, не волнуйтесь. Мне тоже так показалось, и я решил, что обнаружен код, который стоило подчистить. Я переработал его и написал несколько блочных тестов, чтобы проверить, по-прежнему ли он правильно работает. Закончив работу, я почувствовал удовлетворение результатами. Новый вариант легко читался, был вдвое меньшего размера и точнее, поскольку прежний код проверял только верхнюю границу часов, минут и секунд. Когда я готовился к работе на следующий день, меня посетила идея: а почему бы не проверить правильность строки с помощью регулярного выражения? Через несколько минут у меня была готовая реализация, состоящая всего из одной строки кода. Вот она: public static boolean validateTime(String time) { return time.matches("(0[1-9]|1[0-2]):[0-5][0-9]:[0-5][0-9] ([AP]M)"); } Смысл не в том, что в итоге мне удалось заменить 30 с лишним строк кода одной единственной. Смысл в том, что пока я не отошел от компьютера, мне казалось, что моя первая попытка была лучшим решением задачи. Поэтому, когда вы в следующий раз столкнетесь с неподатливой задачей, сделайте одолжение. По-настоящему Читайте кодКарианне Берг (Karianne Berg) Мы, программисты – странные люди. Мы любим писать код. Но что касается его чтения, то мы обычно сторонимся этого дела. В конце концов, писать код гораздо увлекательней, а читать код трудно, иногда – почти невозможно. Особенно тяжело читать код, написанный кем-то другим. Не всегда из-за того, что он плохо написан, но потому, что другой человек думает и решает задачи иначе, чем вы. Но вы никогда не задумывались, что чтение чужого кода может помочь улучшить ваш собственный код? Когда вы в следующий раз будете читать какой-нибудь код, остановитесь и задумайтесь. Трудно читать этот код или легко? Если трудно, то почему? Он плохо отформатирован? Система имен непоследовательна или нелогична? Несколько задач смешались в одном фрагменте кода? Возможно, выбранный язык затрудняет чтение кода. Старайтесь учиться на чужих ошибках, чтобы не повторять их в своем коде. Возможно, вас ждут сюрпризы. Например, технологии разрыва зависимостей могут быть полезны для слабого связывания, но они могут также затруднить чтение кода. А код, который одни считают элегантным, другие могут считать невозможным для чтения. Если код читается легко, задержите на нем свой взгляд и посмотрите, нельзя ли чему-то научиться у него. Возможно, в нем применен паттерн проектирования, который вам не известен или который вы пытались реализовать ранее. Может быть, там использованы более короткие методы с более выразительными именами, чем ваши. В одних проектах open source можно найти массу примеров великолепного, понятного кода, тогда как в других вы столкнетесь с прямо противоположным! Посмотрите образцы такого кода. Чтение своего собственного старого кода из проекта, над которым вы больше не работаете, тоже может оказаться поучительным опытом. Начните с какого-нибудь самого старого кода и постепенно переходите к новому. Возможно, вы обнаружите, что читать его совсем не так легко, как было в то время, когда вы его писали. Ваш ранний код может вызвать у вас определенное смущение, типа того, которое испытываешь, когда тебе рассказывают о том, что ты изрекал накануне вечером после подпития в пабе. Посмотрите, как с годами выросло ваше мастерство – это может очень ободрить. Выясните, какие части кода тяжело читать, и подумайте, продолжаете ли вы писать код в том же стиле сегодня. Итак, когда вы в следующий раз почувствуете необходимость улучшить свое мастерство программирования, не беритесь за книги. Читайте код. Хорошая глава, все понятно, прочитал без запинок. |
Программа по формированию навыков безопасного поведения на дорогах... Разработать обучающую программу, выдающую структурированную и наглядную информацию о работе клавиатуры, буфера клавиатуры, обработчиков... | Литература: Детские народные подвижные игры: Кн для воспитателей... Игру начинает первая пара: кот ловит мышь, а та бегает вокруг играющих. В опасный момент мышь может спрятаться в коридоре, образованном... | ||
Программа по формированию навыков безопасного поведения на дорогах... СанПиН 4 178-02). В 2009-2010 учебном году кабинет был оснащен 10 новыми ученическими компьютерами (монитор, системный блок, мышь,... | Курсовой проект по дисциплине «Системы программирования и операционные системы» Резидентный обработчик прерываний от клавиатуры с подключением до системного обработчика | ||
История Системные требования: Pentium 90,Win 95/NT, 16 Мб озу, монитор с разрешением 640х480, HiColor (не менее 32 тыс цветов), 4х cd-rom,... | Программа по формированию навыков безопасного поведения на дорогах... Цель урока: освоение клавиатуры — важнейшего устройства ввода информации в память компьютера | ||
Программа по формированию навыков безопасного поведения на дорогах... С помощью чего проще набрать текст? Двухкнопочной мыши или 102 клавишной клавиатуры? | Программа по формированию навыков безопасного поведения на дорогах... Цель: познакомить учащихся с различными устройствами ввода информации в компьютер. Изучить назначения клавиш клавиатуры | ||
Компьютер (арм учителя: монитор+системный блок+клавиатура+мышь) Начальный курс географии 7 кл. География. Наш дом Земля. Материки, океаны, народы и страны | Музыка Подробная информация о более чем 100 музыкальных инструментов. История возникновения инструментов, возможность прослушать каждый... | ||
Ландер Кени «О чем думает Стив»» Гений цифровой эры, придумавший компьютерную мышь, айфон и многое другое, без чего наша жизнь была бы совсем другой | Программа по формированию навыков безопасного поведения на дорогах... «Свидетель» уже знала о том, что владеет великим сценарием и хотела присвоить ему звание Лучшего Оригинального Сценария еще до того... | ||
В е д е н и е Кроме того, к компьютеру могут подключаться принтер для вывода на печать текстовой и графической информации; мышь —устройство, облегчающее... | Конспект занятия кружка «Компьютерный мир» 1 кл по теме «Манипулятор «мышь» Построение парами. Переход на площадку. Построение в шеренгу. В центре площадки ребята образуют круг и делятся на две команды | ||
Программа по формированию навыков безопасного поведения на дорогах... Продолжение темы Norton Utilities Программа Speed Disk. Программа WipeInfo и другие утилиты. Создание системной дискеты. Драйверы... | Тема урока: «Компьютер и его основные устройства». Тип урока Опорные понятия: Периферийные устройства: системный блок, монитор, принтер, сканер, клавиатура, мышь, аудио система |