Рекомендации для того, как сделать [закрытый] дизайн ООП

Я думаю, следующий код является эквивалентом:

SpreadsheetApp.getSelection().getCurrentCell()
  .getNextDataCell(SpreadsheetApp.Direction.NEXT)
  .offset(0, 1).activate();

Если вы хотите найти следующую справа ячейку после последней непустой ячейки в той же строке, попробуйте этот код: [ 113]

var sheet = SpreadsheetApp.getActiveSheet();
var row = SpreadsheetApp.getSelection().getCurrentCell().getRow();
var column = sheet.getMaxColumns();
sheet.getRange(row, column).getNextDataCell(SpreadsheetApp.Direction.PREVIOUS).offset(0, 1).activate();
6
задан Chris 29 October 2008 в 17:52
поделиться

15 ответов

Книги:

  • Завершенный код, Steve McConnel
  • Шаблоны разработки, Гаммой, и. al.
3
ответ дан 8 December 2019 в 18:43
поделиться

Очевидно, чтение некоторых рекомендуемых книг поможет. Я думаю, что Главные Первые Шаблоны разработки определенно менее абстрактны, чем книга GoF.

Основным вопросом, который я задаю, является "Этот код, делает что-то очень определенное, которое еще могло быть снова использовано anywhwere?" Если так, Вставленный в классе в блоке, который допускает повторное использование.

Если Вы действительно только запускаете затем одну вещь, я раньше делал, должен был считать каждую таблицу базы данных 'объектом'. Таким образом, каждая таблица базы данных представляет класс. Пуристы скажут Вам, что это - авария, но я нашел это, хороший способ вовлечь себя начал думать в объектных терминах.

0
ответ дан 8 December 2019 в 18:43
поделиться

Просмотрите хороший код API. Например, код платформы Spring. Прочитайте некоторые хорошие книги, такие как Шаблоны разработки (как все остальные упомянутые здесь) и некоторые другие книги по хорошим методам. Например, в Java, Главном Первом Дизайне, серии Effective Java, и т.д. C++ - Эффективный ряд C++

0
ответ дан 8 December 2019 в 18:43
поделиться

Существует несколько вещей, которые можно сделать

  1. Используйте инструменты для дизайна высокоуровневого и низкого уровня, прежде чем Вы на самом деле начнете программировать. Например, Создание диаграмм UML Класса поможет Вашему уму визуализировать решение в форме Diagramtic, а не форме Кода.

  2. Ознакомьтесь с Шаблонами разработки Java. Например, Используя Наследование Полиморфно для начала нагреет Вас, чтобы начать использовать стандартный Java и шаблоны разработки J2EE.

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

0
ответ дан 8 December 2019 в 18:43
поделиться

Я настоятельно рекомендовал бы, чтобы Вы попробовали Разработку через тестирование (TDD). Вы найдете, что для создания кода тестируемым, и не должны постоянно работать, переделывают тестов, у Вас должен будет быть серьезный дизайн. То, что Вы найдете, - то, что, когда Вы добавляете \, изменение \удаляет функциональность, Ваши лучшие проекты потребуют очень маленького набора изменений в определенном наборе тестов. Плохой дизайн вытрет огромный набор тестов - потому что у Вас есть плотное соединение, объекты, ответственные за несколько проблем, и т.д., и т.д., и т.д...

Я нашел, что, чем лучше я достигаю TDD, тем лучше моя архитектура, и лучше, конечный результат.

Следует иметь в виду, TDD берет реальную умственную дисциплину. Вы не должны ожидать, что используете его в течение 1-2 дней и видите непосредственные результаты. Необходимо будет действительно захотеть сделать это и действительно приложить усилие - иначе Вы не извлечете выгоду и вероятно только закончите тем, что ненавидели его.

HTH...

0
ответ дан 8 December 2019 в 18:43
поделиться

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

0
ответ дан 8 December 2019 в 18:43
поделиться

используйте Принципы Объектно-ориентированного проектирования (http://www.surfscranton.com/Architecture/ObjectOrientedDesignPrinciples.htm). также полагайте, что некоторые oo разрабатывают heursitics (http://www.cs.colorado.edu/~kena/classes/6448/s02/lectures/lecture27.pdf)

1
ответ дан 8 December 2019 в 18:43
поделиться

Можно осуществить рефакторинг беспощадно для улучшения дизайна существующего кода.

Основная идея, в какой-то момент код действительно имел смысл, когда новые возможности, приносят в код затем, вероятно, некоторые функции или обязанности должны быть перемещены другому классы, это прекрасно. Затем Вы прекращаете разрабатывать новые возможности и запускаете refacoring Ваш код.

Я рекомендовал бы Вам читать:

Рефакторинг Martin Fowler

1
ответ дан 8 December 2019 в 18:43
поделиться

Запишите крупный проект и позвольте ему распространиться столь большой, как Вы можете. Затем изучите то, что можно сделать для улучшения кода.

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

На хорошем дизайне нет никакого единственного хорошего ответа. Это - на самом деле одна из тех ценных вещей, которые может изучить программист.

1
ответ дан 8 December 2019 в 18:43
поделиться

Ответ на Ваш вопрос мог заполнить книгу самостоятельно, но я предложу, чтобы Вы смотрели на шаблоны разработки.

Классическая книга по предмету упоминается, поскольку "Банда Четыре" заказывает:

Банда четырех книг шаблонов разработки

Martin Fowler также высоко ценится в поле.

2
ответ дан 8 December 2019 в 18:43
поделиться

Я не соглашаюсь о запуске с книги по шаблонам разработки или рефакторингу.

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

Я запустил бы с этой книги:

Гибкая разработка программного обеспечения, принципы, шаблоны и методы Robert C. Martin

В этой книге Robert Martin описывает основные принципы, которые делают хороший дизайн OO, все они связанный с инкапсуляцией, связью и модульным принципом:

  • Открываться/Закрывать Принцип
  • Замена Liskov
  • Инверсия зависимости
  • Гранулярность
  • Общее закрытие
  • Повторное использование
  • Никакая циклическая зависимость
  • Устойчивость зависимости
  • Абстракция и устойчивость

В конце концов, почти каждый метод Шаблона разработки и Рефакторинга, который я видел зарегистрированный в GoF и Fowler, нацелен на достижение одного из нескольких из этих основных принципов, в зависимости от их относительного приоритета для данного сценария.

3
ответ дан 8 December 2019 в 18:43
поделиться

Я запустил бы путем рисования эскизов моего дизайна. Тот эскиз мог быть блочной и стрелочной диаграммой для проявления отношений между классами, или это могла быть вариация на UML (или возможно даже стандартный UML). Но я нахожу, что эскизы помогают мне видеть, что дизайн хорош/плох и возможно даже, как зафиксировать его.

Я также посмотрел бы на книгу по шаблонам разработки.

2
ответ дан 8 December 2019 в 18:43
поделиться

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

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

0
ответ дан 8 December 2019 в 18:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: