Как программисты практикуют повторное использование кода

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

Пример:

public class RealMain { //the class in the manifest
    public static void main(String[] args) {
        Gui.main(args);
    }
}

public class Gui extends Application{
    public static void main(String[] args) {
        launch();
    }
}

13
задан Inisheer 26 October 2008 в 08:36
поделиться

13 ответов

В зависимости от размера проекта может изменить ответ.

Для меньшего проекта я рекомендовал бы настроить класс DatabaseHelper, который делает весь Ваш доступ DB. Это просто была бы обертка вокруг вводных/заключительных соединений и выполнения кода DB. Затем в более высоком уровне можно просто записать DBCommands, который будет выполняться.

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

Вы могли бы также попытаться изучить ORM, DAAB, или к Patterns and Practices Group

До, как предотвратить ole C&P? - Хорошо, поскольку Вы пишете свой код, необходимо периодически рассматривать его, если у Вас есть подобные блоки кода, это только варьируется параметром или два, который всегда является хорошим кандидатом на рефакторинг в его собственный метод.

Теперь для моего псевдо примера кода:

Function GetCustomer(ID) as Customer
   Dim CMD as New DBCmd("SQL or Stored Proc")
   CMD.Paramaters.Add("CustID",DBType,Length).Value = ID
   Dim DHelper as New DatabaseHelper
   DR = DHelper.GetReader(CMD)
   Dim RtnCust as New Customer(Dx)
   Return RtnCust
End Function

Class DataHelper
  Public Function GetDataTable(cmd) as DataTable
    Write the DB access code stuff here.
    GetConnectionString
    OpenConnection
    Do DB Operation
    Close Connection
  End Function
  Public Function GetDataReader(cmd) as DataReader
  Public Function GetDataSet(cmd) as DataSet
  ... And So on ...
End Class
0
ответ дан 1 December 2019 в 21:39
поделиться

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

Возьмите скромный printf, например. Вообразите, не имели ли Вы printf, и только имел write, или что-то подобное:

//convert theInt to a string and write it out.
char c[24];
itoa(theInt, c, 10);
puts(c);

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

printf("%d", theInt);

Вы не должны становиться столь же необычными как printf с он - variadic аргументы и строка формата. Даже просто простая стандартная программа, такая как:

void print_int(int theInt)
{
    char c[24];
    itoa(theInt, c, 10);
    puts(c);
}

добился бы цели приятно. Таким образом, если Вы хотите измениться print_int чтобы всегда печатать к stderr, Вы могли обновить его, чтобы быть:

void print_int(int theInt)
{
    fprintf(stderr, "%d", theInt);
}

и все Ваши целые числа были бы теперь волшебно распечатаны к стандартной погрешности.

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

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

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

9
ответ дан 1 December 2019 в 21:39
поделиться

Проверьте книгу Martin Fowler по рефакторингу, или часть многочисленного рефакторинга связала интернет-ресурсы (также на stackoverflow), чтобы узнать, как Вы могли улучшить код, который имеет запахи дублирования.

4
ответ дан 1 December 2019 в 21:39
поделиться

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

4
ответ дан 1 December 2019 в 21:39
поделиться

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

Также убедитесь, что библиотека является единицей, протестированной и зарегистрированной. Таким образом, очень легко найти правильный класс/функцию/переменную/постоянный.

2
ответ дан 1 December 2019 в 21:39
поделиться

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

ExportToExcel (Дата списка, представьте имя файла в виде строки),

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

1
ответ дан 1 December 2019 в 21:39
поделиться

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

  1. Предоставление вещей имен, которые получают их сущность. Это действительно действительно важно
  2. Удостоверяясь, что это только делает одну вещь. Это, действительно возвращается к первому вопросу, если Вы не можете назвать его его сущностью, затем часто его выполнение слишком много.
  3. Определение местоположения вещи, где-нибудь логичной. Снова это возвращается к способности назвать вещи хорошо и получение ее сущности...
  4. Группировка его с вещами, которые основываются на центральном понятии. То же как выше, но сказал differntly :-)
2
ответ дан 1 December 2019 в 21:39
поделиться

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

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

  1. Трудно ожидать будущие потребности, таким образом, очень трудно определить API, таким образом, Вы действительно использовали бы их в следующий раз. Это может стоить Вам вдвое большего количества времени - после того как Вы делаете это более общим именно так, что во второй раз Вы собираетесь переписать его так или иначе. Мне кажется, что особенно проекты Java в последнее время подвержены этому, они, кажется, всегда переписываются в платформе du подмастерье, только больше "легче интегрироваться" или безотносительно в будущем.

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

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

2
ответ дан 1 December 2019 в 21:39
поделиться

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

0
ответ дан 1 December 2019 в 21:39
поделиться

Я сделаю это на двух уровнях. Сначала в классе или пространстве имен, помещенном, что часть кода, которая снова используется в том объеме в отдельном методе и удостоверяется, что это называют.

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

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

Обратите внимание, что что-либо, что должно быть снова использовано потребности, которые будут зарегистрированы более подробно. Его соглашение о присвоении имен быть отличным, все параметры, возвращает результаты и любые constraints/limitations/pre-requisites, которые необходимы, должен быть ясно зарегистрирован (в коде или справочных файлах).

0
ответ дан 1 December 2019 в 21:39
поделиться

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

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

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

0
ответ дан 1 December 2019 в 21:39
поделиться

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

  1. Запишите функцию, параметризуйте ее для разрешения изменений
  2. Запишите функциональный объект с участниками для содержания переменных данных
  3. Разработайте иерархию (функциональный объект?) классы, которые реализуют еще более сложные изменения
  4. В C++ Вы могли также разработать шаблоны для генерации различных функций или классов во время компиляции
0
ответ дан 1 December 2019 в 21:39
поделиться

Легкий: каждый раз, когда Вы ловите себя вставляющий копию код, сразу вынимаете его (т.е. не делайте этого после того, как у Вас уже есть код CP'd несколько раз) в новую функцию.

0
ответ дан 1 December 2019 в 21:39
поделиться
Другие вопросы по тегам:

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