Различие между библиотекой и кодом приложения?

pushd . > /dev/null
SCRIPT_PATH="${BASH_SOURCE[0]}"
if ([ -h "${SCRIPT_PATH}" ]); then
  while([ -h "${SCRIPT_PATH}" ]); do cd `dirname "$SCRIPT_PATH"`; 
  SCRIPT_PATH=`readlink "${SCRIPT_PATH}"`; done
fi
cd `dirname ${SCRIPT_PATH}` > /dev/null
SCRIPT_PATH=`pwd`;
popd  > /dev/null

Работы для всех версий, включая

  • при вызове через multple гибкую ссылку глубины,
  • когда файл это
  • когда сценарий, названный командой"source"иначе . (точечный) оператор.
  • когда аргумент $0 изменяется от вызывающей стороны.
  • "./script"
  • "/full/path/to/script"
  • "/some/path/../../another/path/script"
  • "./some/folder/script"

С другой стороны, если сам сценарий удара является относительной символьной ссылкой, Вы хотите следовать за ним и возвратить полный путь связанного - к сценарию:

pushd . > /dev/null
SCRIPT_PATH="${BASH_SOURCE[0]}";
if ([ -h "${SCRIPT_PATH}" ]) then
  while([ -h "${SCRIPT_PATH}" ]) do cd `dirname "$SCRIPT_PATH"`; SCRIPT_PATH=`readlink "${SCRIPT_PATH}"`; done
fi
cd `dirname ${SCRIPT_PATH}` > /dev/null
SCRIPT_PATH=`pwd`;
popd  > /dev/null

SCRIPT_PATH дан в полном пути, неважно, как это называют.
Просто удостоверьтесь, что Вы определяете местоположение этого в начале сценария.

Этот Копилефт комментария и кода, выбираемая лицензия под GPL2.0 или позже или CC-SA 3.0 (Доля CreativeCommons Одинаково) или позже. (c) 2008.Все права защищены. Никакая гарантия любого вида. Вас предупредили.
http://www.gnu.org/licenses/gpl-2.0.txt
http://creativecommons.org/licenses/by-sa/3.0/
18eedfe1c99df68dc94d4a94712a71aaa8e1e9e36cacf421b9463dd2bbaa02906d0d6656

6
задан sandstrom 13 August 2009 в 08:16
поделиться

3 ответа

Код библиотеки предназначен для многократного использования, а код приложения - нет. Храните код в библиотеке, если он не привязан конкретно к приложению.

В случае сомнений попробуйте ответить на следующий вопрос:

Если я напишу другое приложение, останется ли этот код?

8
ответ дан 8 December 2019 в 17:25
поделиться

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

4
ответ дан 8 December 2019 в 17:25
поделиться

When faced with these kind of categorisation questions I want to know one thing: the consequences of miscategorisation.

This code is "library", that code is "application" ... for whose benefit is this distinction being made? What would happen if we put some code in the wrong category?

One possible answer:

It affects the reuse of the code. Lets suppose that we have a policy: library code is available in a DLL with the required headers etc. Application code is just deployed in a .EXE.

Put a nice routine for doing a difficult calculation in the App, not the library, then it can't readily be reused.

Perhaps further things follow from that line of thinking ... questions of versioning apply. Do we need to produce better documentation? [Even with a single developer we might take more care?] Do we need to externalise configuration information, mak doubly sure not to hard code anything?

2
ответ дан 8 December 2019 в 17:25
поделиться
Другие вопросы по тегам:

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