Skip to content
19.03.2016 / Kefir

Проблема оценки сложности разработки ПО

Условно разработку программного обеспечения можно разделить на 3 фазы: постановка задачи, решение, проверка. Интересно то что до сих пор решение задачи считается наиболее затратной частью разработки, про это пишут книги, об этом снимают фильмы. Но на самом деле, решать задачи мы научились уже очень хорошо, а вот с остальным проблемы.

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

Аналитик пишет ТЗ:

Разработать метод, вычисляющий сумму чисел.

Тег «Далее»

02.01.2013 / Kefir

Дилемма equals и hashCode

Рассмотрим коллекции на основе хэш-таблиц: HashSet и HashMap. Для их корректной работы необходимо, чтобы у объектов, используемых в качестве ключа, были переопределены методы equals и hashCode. Однако, здесь не обошлось без подводных камней.

Спецификация требует выполнения 2х взаимоисключающих условий:

  1. Для равных по equals объектов, метод hashCode должен возвращать равные значения.
  2. Метод hashCode всегда должен возвращать одно и то же значение.

Тег «Далее»

04.02.2011 / Kefir

Java Logging: история кошмара

На хабре опубликована замечательная статья с историей развития библиотек логирования Java.

Java Logging: история кошмара

05.12.2010 / Kefir

Декомпозиция и повторное использование кода в JSP (Часть 1)

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

Тег «Далее»

16.11.2010 / Kefir

Node.js

Node.js в ближайшие несколько лет станет доминирующей технологией в области WEB-разработки.

Решающим фактором станет единый язык (Java Script) для написания клиентской и серверной части приложения. Как следствие, снижение требований к квалификации программиста. Как следствие, более дешевая рабочая сила. Как следствие, уменьшение затрат на разработку.

Это мой прогноз. Я его записал, чтобы потом сказать: «Я же говорил!»

28.10.2010 / Kefir

Виртуальные функции C++

Бывает, к нам приходят люди которые не имеют опыта программирования на Java, но имеют опыт программирования на C++. Синтаксис Java основан на синтаксисе C/C++, кроме того C++ является объектно-ориентированным языком. Поэтому, переучивание не кажется слишком сложным. Однако, C++ допускает разработку как в ОО-, так и в процедурной парадигме. Распознать, владеет ли человек C++ как ОО-языком не простая задача. Для этого был придуман вопрос, ответ на который гарантирует прием на работу в нашу компанию (шутка). Вопрос звучит так: «Что такое виртуальные функции в C++?» Еще никто не ответил. В лучшем случае люди вспоминают про абстрактные функции, а это совсем не то.

Тег «Далее»

26.09.2010 / Kefir

Отношение "многие ко многим"

Очень часто в реальной (и не только) жизни возникают отношения «многие ко многим», обладающие атрибутами. Еще раз: отношение обладает атрибутами. тогда для определения отношения в Java создается специальный класс.
Тег «Далее»