LINUX.ORG.RU

Проектирование приложения

 ,


0

1

В общем решил написать софтинку небольшую на Go, но споткнулся еще на этапе проектирования :)

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

★★★★★

Последнее исправление: CYB3R (всего исправлений: 2)

обработчик аргументов командной строки в отдельный пакет

а у тебя их реально очень много? обычно там кода на десять строк - import «flag» и вперед.

kelyar ★★★★★
()

это, по-моему даже не вопрос проектирования. Это вопрос вкуса(ну и разумности — если очень там много кода, то выноси).

Bad_ptr ★★★★★
()
Ответ на: комментарий от Bad_ptr

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

deterok ★★★★★
() автор топика

Достаточно в отдельную функцию

Debasher ★★★★★
()
Ответ на: комментарий от kelyar

Кстати, а как это сделать работая с пакетом main?
Логика вообще у них такая: один main - один бинарь, а сборка типа go build *.go не кошерна как я понял.
Вообще можно как-то вынести в отдельный файл функции принадлежащии пакету main(харнить вместе с пакетом main файлы других пакетов?) без создания отдельной дирекории?

deterok ★★★★★
() автор топика
Последнее исправление: deterok (всего исправлений: 1)
Ответ на: комментарий от deterok

уууу. Ну так ознакомься сначала, со структурой 'проекта', как это принято делать на go, в какие директории и куда ложить модули //это уж не говоря о том, что несколько файлов может принадлежать одному пакету

Bad_ptr ★★★★★
()
Последнее исправление: Bad_ptr (всего исправлений: 1)
Ответ на: комментарий от Bad_ptr

Да я знаю как оно работает, но у меня есть непонятки с пакетом main т.к. он ведет себя иначе, чем другие пакеты. Его не получится так просто разбить на несколько файлов, в этом вся проблема.

deterok ★★★★★
() автор топика
Ответ на: комментарий от deterok

не понял вопроса. делаешь несколько файлов. у всех package yournamehere.

go build скомпилит их в один без проблем, функции, естественно, будут видны.

kelyar ★★★★★
()
Последнее исправление: kelyar (всего исправлений: 1)
Ответ на: комментарий от deterok

main т.к. он ведет себя иначе, чем другие пакеты. Его не получится так просто разбить на несколько файлов, в этом вся проблема.

4.2

anonymous
()
Ответ на: комментарий от anonymous

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

deterok ★★★★★
() автор топика
Ответ на: комментарий от deterok

Логика вообще у них такая: один main - один бинарь, а сборка типа go build *.go не кошерна как я понял.

go build .

Ну или вместо точки полное название пакета:

go build github.com/revel/cmd/revel

anonymous
()

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

deterok ★★★★★
() автор топика
Ответ на: комментарий от deterok

Мог разные package указать в файлах из одного пакета.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.