2010-05-29 3 views
6

Я изучаю Java и ООП и делаю проблемы на уровне Project Euler для практики (потрясающий сайт btw).Наилучшие способы повторного использования методов Java

Я считаю себя делать многие из тех же вещей, снова и снова, как:

  • проверки, если целое число является простым/генераторными штрихи
  • порождающего ряда Фибоначчей
  • проверки, если число является palindrome

Каков наилучший способ хранения и вызова этих методов? Должен ли я писать класс утилиты, а затем import? Если да, я могу импортировать файл .class или источник .java? Я работаю из простого текстового редактора и терминала Mac.

Спасибо!

+1

+1 для кодирования java кодирования euler и ide-less – miku

+1

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

ответ

5

Вы можете поместить свои методы в класс утилиты, затем import этот класс (а не файл!).

import my.useful.UtilityClass; 

... 
boolean isPrime = UtilityClass.isPrime(2); 

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

+0

Что означает 'my.useful.UtilityClass', файл' my.useful.UtilityClass.class'? – carillonator

+1

Нет, файл 'my/useful/UtilityClass.class' по отношению к classpath :) – BalusC

+0

aha - спасибо! – carillonator

0

Почему бы не создать файл jar, не используя библиотеки, часто используемые компоненты? Если вы скомпилируете свой Java-код, просто включите архив утилиты в свой путь к классам.

1

Идея UtilityClass хорошая, но она также дает вам возможность попрактиковаться TDD. Для новой проблемы Эйлера создайте пустой метод в UtilityClass, где вы решите эту проблему. Затем создайте связку JUnit tests, которые используют этот новый метод и зависят от правильности его использования. Тесты все потерпят неудачу (или они должны, потому что вы еще не написали решение!)

Теперь решить проблему Эйлера и посмотреть, как проходят испытания! Если вы захотите повторно использовать код позже, модульные тесты будут держать вас в курсе во время рефакторинга и предоставят место для добавления регрессионных случаев для ошибок, которые вы можете найти.

+0

спасибо за введение в TDD и JUnit. – carillonator

1

Создайте дерево каталогов с вашими ответами. мой/математика/*. Java. Вы должны указать пакет my.math для класса. Создавать различные классы для разных наборов задач; Primes.java, Fibonacci.java и т. Д. Если вы уже решили проблему один раз, не решайте ее снова, если ваше решение не сломано.

Добавьте каталог выше my/math в свой путь к классам (каталог java -cp) или создайте каталог и добавьте его в свой путь к классам.

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

+0

хороший подробный совет, спасибо. – carillonator

Смежные вопросы