Я сделал что-то подобное для клиента недавно. Вот версия того, что я сделал для них (пример, протестированный во всех последних версиях браузера на Победе Vista). Не прекрасный все вокруг платы, но мог быть настроен довольно легко.
Демонстрация: http://enobrev.info/ellipsis/
Код:
This is some really long text. This is some really long text. This is some really long text. This is some really long text.
Стремитесь к низкому сцеплению, высокому сцеплению .
(Я украл это изображение с указанного выше веб-сайта)
Это не относится к CS, просто помните, что получение простых или кратких результатов - это хорошие цели. Если вы можете создать что-то простое и краткое, то вы, вероятно, создаете качественную работу.
Понимание и использование структур данных и алгоритмов, предоставленных мне языковыми библиотеками (либо из стандартных, либо от третьих сторон, например Boost). Не изобретайте велосипед, а узнайте, какие колеса лучше ваших.
Я довольно часто делаю проблему на более мелкие подзадачи, даже если на самом деле не думаю об этом:
Тем не менее, возможно, это не совсем «концепция» ... Событие, если я помню некоторые уроки алгоритмов, где нас учили «разделять, чтобы побеждать» ^^
Если вам нужно что-то более конкретное, я бы пошел с:
Шаблон контроллера представления модели - это тот, который я использую чаще, чем любой другой.
Объектно-ориентированное программирование и структура данных
Параллелизм и параллельные вычисления. Я не трогал его много лет, но с каждым годом он становится все более актуальным (и с каждым удвоением количества ядер).
Оценка пространственно-временной сложности и использование соответствующих структур данных для получения намного более простого / быстрого кода. Моделирование определенных проблем в виде графиков также иногда оказывалось полезным.
Это университетские курсы / концепции, которые я нашел наиболее полезными для моей профессиональной карьеры
предполагаю, что это все ... Я не упоминал конкретные технологии здесь только концепции.
Связь и сплоченность.
По сути, это парадигма «разделяй и властвуй», лежащая в основе всего программного обеспечения.
Вы ищете ортогональные концепции и ортогональные программные объекты, которые демонстрируют неплотность связь и высокая когезия.
Использовали gosub в Basic? Вы используете C&C.
Чем дольше существует ошибка в программном обеспечении, тем дороже ее обнаружение и устранение. тем меньше вероятность того, что он будет исправлен должным образом
«Отладка кода вдвое сложнее, чем его написание. Поэтому, если вы пишете код настолько умно, насколько можете, вы по определению недостаточно умны, чтобы отлаживать его».
Я довольно часто делаю проблему на более мелкие подзадачи, даже если на самом деле не думаю об этом:
Тем не менее, возможно, это не совсем «концепция» ... Событие, если я помню некоторые уроки алгоритмов, где нас учили «разделять, чтобы побеждать» ^^
Если вы хотите чего-то более конкретного, я бы пошел с:
Абстракция
Ахо и Ульман пишут во введении к Основам информатики
Но по сути, информатика - это наука об абстракции - создание правильной модели для размышлений о проблема и разработка соответствующих механизируемых методов ее решения.
Синглтон, шаблоны и шаблоны стратегий.
Также:
ЯГНИ - Тебе это не понадобится
KISS - Будь простым, глупым
Избегать преждевременной оптимизации, как сказал г-н Кнут:
«Мы должны забыть о небольшой эффективности, скажем, примерно в 97% случаев: преждевременная оптимизация является корнем всех зол». (из Википедии)
«Любая проблема в информатике может решить с другим слоем косвенное обращение »- Дэвид Уиллер, руководитель программист для проекта EDSAC в начало 1950-х
При правильном применении это приводит к разумному обобщению, как видно из таких примеров, как абстрактные типы данных, повторно используемые классы с виртуальными методами и т. д.
При неправильном применении это приводит к чрезмерно косвенным реализациям с много накладных расходов времени выполнения из-за чрезмерного обобщения, например, архитектура Intel 432.