Pull to refresh
  • by relevance
  • by date
  • by rating

ropevim = vim + rope + python

VIM *
Для python-разработчика и vim-юзера в одном человеке, ropevim приподнесет приятный сюрприз. Наконец-то в наш любимый редактор возможна безболезненная интеграция rope — python-библиотеки, предназначенной для рефакторинга. Для тех кто не слышал о rope, кратко перечислю некоторые из возможностей: довольно умное кододополнение, возможность переименования переменных и модулей, возможность перехода на описание объекта, где бы он ни оно не находилось, автоимпорт и прочее.
Читать дальше →
Total votes 11: ↑11 and ↓0 +11
Views 4.5K
Comments 6

Bug Driven Development

Lumber room
Разработка основанная на багах. Баги поступают от клиентов, от тестировщиков. Баги поступают даже от своей собственной программы, когда мы начинаем деБАЖить (deBUG). Где выход и что делать. Одна из таблеток — TDD.

см. видеокаст — rutube.ru/tracks/2366112.html

Интересно узнать ваше мнение на такой способ разработки. Так же дайте отзыв по качеству и компановке материала, чтобы в следующий раз было лучше :)
Total votes 5: ↑2 and ↓3 -1
Views 1.3K
Comments 6

Повышение качества javascript кода. JSLint

JavaScript *

Случилось так, что в последнее время мне пришлось читать и рефакторить очень много ужасного javascript-кода. Работа с таким кодом стоит очень многих нервов при сопровождении, да и писать/отлаживать такой код не приятно. Мысли о том, что заставляет людей писать плохой код и как с этим можно бороться заставили меня писать эту статью. Не претендую на сколь-нибудь полное раскрытие темы борьбы за качество кода, хочу рассмотреть лишь некоторые аспекты, доставляющие наибольшее количество проблем. В качестве основного инструмента оптимизации качества кода предлагаю использовать JSLint, который несмотря на все плюсы, не является панацеей и может служить лишь отправной точкой для дальнейшего улучшения кода.

Всех у кого хоть раз болела голова при написании/чтении javascript кода прошу под кат.
Читать дальше →
Total votes 94: ↑90 and ↓4 +86
Views 29K
Comments 107

Немного о прелестях NetBeans + php

PHP *
Я, как человек, связанный университетом с Java, следил за развитием NetBeans практически с момента его становления изначально меня принудил ей пользоваться мне показал эту IDE мой учитель — Вадим Монахов (с гордостью обнаружил, что ссылка на него ведет с wikipedia, раздел литература). Сейчас часто сталкиваюсь с тем, что программисты PHP пишут говнокод ссылаясь на недоразвитость IDE не умеют делать Refactoring и многих из них останавливает отсутствие автоматизированных средств. Собственно, я решил отобрать у них этот аргумент: средства есть и сегодня я рассмотрю NetBeans как среду разработки для PHP и продемонстрирую заложенную в нее мощь.
Читать дальше →
Total votes 118: ↑103 and ↓15 +88
Views 38K
Comments 151

Ветвления. Что с ними можно сделать

C++ *
Мой прошлый пост вызвал огромный резонанс. Комментариев было не много, но я получил множество писем, а некоторые читатели выступили даже с открытыми заявлениями (там, правда, преобладают наезды на меня лично и на хабр в целом, но есть и мысли по существу вопроса). Поэтому я решил продолжить писать в жанре «мои мысли по поводу вопросов известной компании». Этим постом я постараюсь решить две задачи: (i) ответить на вопросы и возражения читателей предыдущего поста и (ii) толкнуть в некотором смысле философскую мысль о безIFовом программировании. Букв получилось довольно много, но те, кому интересно только что-то одно из поста, могут пропустить половину.

И ещё: этот топик (как и прошлый) — не наезд ни на кого. Просто интересно порассуждать об интересных вопросах. Здесь нет подтекста, намёка, вызова. Параноиков и сторонников теорий заговоров попрошу расслабиться.

В этот раз хотел бы взглянуть на вопрос 4.
Читать дальше →
Total votes 60: ↑49 and ↓11 +38
Views 7.3K
Comments 35

Одержимость красивым кодом, синдромом рефакторинга

Designing and refactoring *
В последнее время распространилась одержимость рефакторингом. Доходит до того, что некоторые программисты ставят ему больший приоритет, чем более важным вещам, таким как:
  • Корректность
  • Надежность
  • Отслеживаемость
  • Поддерживаемость

Если это доходит до крайности, и все, о чем заботится программист, является красота кода, он может попасть под синдром рефакторинга.
Читать дальше →
Total votes 129: ↑103 and ↓26 +77
Views 3.7K
Comments 82

Рефакторинг проекта в SVN с помощью ANT

Designing and refactoring *
Sandbox
В статье описывается способ разделения логики и реализации логики в ant-скриптах, примененный для решения одной практической задаче по рефакторингу большого проекта в SVN-репозитории.

Предыстория

Имеется проект в SVN из 15 000 файлов и 5 000 папок. Проекту почти 10 лет, на нем поработало несколько поколений разработчиков разной квалификации. В какой-то момент, пару-тройку лет назад, а может и раньше, архитектура проекта «потекла». Разные модули и слои стали писаться в разных стандартах организации кода, возникли циклические зависимости между модулями. В итоге в SVN за долгие года образовалась свалка. Проект собирается, но совершенно шаманским способом.

Задача

Привести код к единому формату хранения. При этом сохранить историю изменений по каждому файлу и не останавливать процесс разработки.

Сложности

Сохранить историю по одному файлу или папке в SVN довольно просто с помощью команды svn copy. При небольшом количестве файлов все можно сделать вручную.
С разбором большого проекта сложно. Пока будешь вручную разбирать 15 000 файлов, разработчики накоммитят новых изменений и их тоже нужно будет копировать. Замкнутый круг.
Нужна автоматизация. Скриптик, который раз! — и переводит проект в новую структуру.

Результат

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

Читать дальше →
Total votes 19: ↑17 and ↓2 +15
Views 1.8K
Comments 4

Exception-ы и мифы о них

Programming *
Sandbox
Уже не первый раз сталкиваюсь с негибким отношением к поднятию исключений. Именно к поднятию, потому что к перехвату у большинства мнение совпадает: перехватывай только тогда, когда на самом деле можешь обработать. Поднятие же воспринимается, как нечто исключительное, из ряда вон. Когда видят throw, начинают рассказывать кучу историй о том как...
Читать дальше →
Total votes 53: ↑39 and ↓14 +25
Views 14K
Comments 68

Приводя в порядок POSTs в ASP.NET MVC

ASP *
Translation
В топике описывается один из профессиональных приёмов разработки ASP.NET MVC приложений, который позволяет значительно сократить количество повторяющегося кода в обработчиках POST действий форм. Несмотря, на то, что я узнал о нём ещё во времена первого издания ASP.NET MVC In Action и первой mvcConf, стиль изложения Jimmy Bogard мне показался очень простым и я решил опубликовать вольный перевод для тех, кто ещё не использует этот подход на практике.

Если вы это не используете, тогда мы идем к вам!
Total votes 12: ↑8 and ↓4 +4
Views 6.5K
Comments 1

Closures и полное копирование объекта

.NET *
Sandbox
Сегодня передо мной встала задача сделать полную копию объекта, то есть DeepClone. Рассмотрим некоторый код и я покажу какие проблемы при этом могут возникнуть и как их решить.
Читать дальше →
Total votes 23: ↑20 and ↓3 +17
Views 9.5K
Comments 54

Басни на ночь — Хорошие имена как залог успеха

Designing and refactoring *C# *
Sandbox
image
Доброго времени суток всем.

«Как лодку назовешь, так она и поплывет» — довольная известная фраза, которая вполне подходит к функциям, переменным, классам.

Сколько раз вам приходилось читать чужой (а бывает и свой код, каюсь, бывало подобное с моим же кодом) и разбираться с написанным месивом. Назначение переменных, функций, а то и вовсе классов не являются интуитивно понятным.
Казалось бы, есть переменная, есть ее имя, но ее назначение не понятно.

Например
enum Dates{
  GET_FIRST,
  GET_SECOND,
  GET_BOTH,
  None
}



Вот и думай, что этот енам делает эдакого в вашем коде. Вроде из названия перечисления понятно, что дело связано с датами. Может методу передаются две даты, и нужно выбрать какую то из них. А может в расчет нужно брать только определенные даты, первую и вторую из списка. А может что еще, может быть много мнений.
Читать дальше →
Total votes 19: ↑10 and ↓9 +1
Views 1.3K
Comments 34

Из гадкого утёнка в лебедя, или как исправить криворукий код

Programming *Designing and refactoring *
image

О чём это?


Многие начинают писать проект для работы с 1 малой задачей, не подразумевая, что данная история приведёт к многопользовательской системе управления, ну допустим, контентом или упаси, производством. И всё вроде здорово и классно, всё работает, пока не начинаешь понимать, что тот код, который написан — состоит целиком и полностью из костылей и хардкода.
Читать дальше →
Total votes 48: ↑11 and ↓37 -26
Views 1.6K
Comments 19

Другой взгляд на эволюцию гадкого утёнка или рефакторинг спагетти

PHP *Programming *Designing and refactoring *
Я с большим энтузиазмом отношусь к любым попыткам улучшить общую культуру разработки в таком неоднозначном сообществе, как сообщество PHP-разработчиков. Но видя некоторые инициативы хочется убиться об стену их немного поправить, чтобы не дай бог не пришлось работать с кодом, сильно отличающимся от моих представлений о совершенном коде.

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

Собственно мой вариант
Total votes 50: ↑37 and ↓13 +24
Views 2.4K
Comments 82

Может ли ваш язык программирования делать такое?

Programming *C# *
Sandbox
Недавно я прочитал статью Джоэла Спольски “Can your programming language do this?”и она настолько сильно пришлась мне по душе, что я решил перевести ее. Но не просто так, а добавить немного от себя. А именно, вместо примеров на JavaScript (использованных Джоэлем в оригинале), я решил написать примеры на С#, который мне на сегодняшний день ближе. Собственно результат и представляю на суд сообществу под катом.

Читать дальше →
Total votes 116: ↑74 and ↓42 +32
Views 6K
Comments 244

C#. Сортировка членов типа с помощью ReSharper

.NET *Designing and refactoring *C# *
Sandbox
Tutorial

Существуют некоторые соглашения касаемые структуры класса, и того, в каком порядке должны располагаться его члены.
Вот, например, правила которые использует StyleCop, возможно, в вашей компании есть свои собственные.
Поддерживать структуру вручную довольно тяжело, скучно и отнимает много времени, особенно когда в классе довольно большое количество свойств, полей, методов и.т.д.
В этом посте речь пойдет о том, как с помощью ReSharper автоматизировать этот процесс.
Читать дальше →
Total votes 31: ↑28 and ↓3 +25
Views 14K
Comments 11

10 моих любимых функций CodeRush для .NET разработки в Visual Studio

Developer Soft corporate blog .NET *Visual Studio *

Вкратце, DevExpress CodeRush — это платный плагин для Visual Studio, относящийся к классу productivity tools, который позволяет разработчику быстрее писать более качественный код, отлаживать его, запускать тесты, обнаруживать дефекты и выполнять другие полезные функции.

В этой статье я постарался собрать не просто список своих собственных предпочтений по его использованию, но и провести небольшую валидацию так, чтобы на выходе большинство из представленных фишек использовались другими ребятами в моей команде. Я считаю, что даже несмотря на активное развитие Visual Studio (особенно порадовала 2012я версия) и превращение некоторых из описанных функций в нативные, необходимость в сторонних помощниках типа CodeRush и ReSharper все еще актуальна для части разработчиков, так как позволяет сэкономить время и повысить общее удобство кодирования. Наконец, не стоит забывать, что еще достаточно разработчиков сидят на Visual Studio 2010- (как минимум сужу по множеству заказчиков) ввиду особенностей проекта, бюджета или просто привычки.

Итак, кому интересно узнать, что другие .NET разработчики используют для повышения эффективности пусть и малой, но не менее увлекательной части процесса конструирования программного обеспечения, прошу пожаловать под кат (внимание, много картинок и видео, а также опрос!)
Читать дальше →
Total votes 33: ↑25 and ↓8 +17
Views 16K
Comments 28

Рефакторинг схем баз данных

SQL *Designing and refactoring *Microsoft SQL Server *
Tutorial
Я хочу рассказать о рефакторинге схем баз данных MS SQL Server.

Рефакторинг — изменение во внутренней структуре программного обеспечения, имеющее целью облегчить понимание его работы и упростить модификацию, не затрагивая наблюдаемого поведения.
— Martin Fowler

О рефакторинге кода говорят уже давно. На данный момент написано немало литературы, создано множество инструментов, помогающих выполнять рефакторинг кода.
А вот про рефакторинг схем баз данных не так уж и много информации. Я решил немного восполнить этот пробел и поделиться своим опытом.
Читать дальше →
Total votes 14: ↑11 and ↓3 +8
Views 18K
Comments 53

Киски: Рефакторинг

PHP *Programming *Designing and refactoring *API *
Translation
Tutorial
imageДобрый день, Хабровчане!

Продолжаю совмещать развитие навыков перевода c английского и изучение интересных, с моей точки зрения, материалов по программированию и делюсь с вами слегка адаптированным переводом первой части из небольшого цикла статей про рефакторинг от голландца Matthias Noback, который живет в городе Зейст что вблизи Утрехта.

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

Смысловое значение этой статьи не затронуто, а все изменения (заголовок и пара замен названия сервиса) сделаны лишь с целью разбавить довольную сухую и, надеюсь, простую в плане сложности материала статью, чтобы затем перейти к следующим частям всего цикла.
Все подробности, как обычно, под хабракатом..
Total votes 21: ↑19 and ↓2 +17
Views 17K
Comments 0