2013-04-03 2 views
2

Это простая задача, позвольте мне вкратце описать это!Лучший дизайн для инструмента командной строки

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

FILE 

sum; 1, 2, 3, 4 

Output 

10 

инструмент командной строки должен удовлетворять эти требования:

1- Легко поддерживается, разработала (больше команд может быть добавлен в будущем) и удобны для пользователя.

2 Аргументы командной строки могут быть изменены и добавлены новые.

3- Может жить как проект с открытым исходным кодом, организованный источник-дерево.

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

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

Пожалуйста, посоветуйте и не стесняйтесь критиковать то, что я только что сказал.

Последнее, что я буду использовать C++!

Спасибо!

+0

Это не столько «писать парсер», сколько вы думаете, как проектирование переводчика для языка, что не является очень тривиальным вопросом. Вы можете посмотреть, что такое «лексер» и «парсер». Flex + Bison - это набор инструментов для C, который автоматически генерируется, а для C++ вы можете посмотреть Boost.Spirit. – TC1

+1

Чтобы критиковать то, что вы только что сказали: вам нужно нанять программиста, для которого не предназначен этот веб-сайт. Этот сайт, напротив, предназначен для людей, которые пишут собственный код, уже приложил много усилий, провел исследования и столкнулся с определенным препятствием, которое они демонстрируют с помощью короткого, минимального, автономного фрагмента кода примера , –

+0

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

ответ

0

1- Boost.Program_options - ваш друг, когда дело доходит до анализа параметров командной строки.
2- Посмотрите на command pattern. Хотя на языке, который обладает средствами отражения, легче реализовать, но по-прежнему можно отобразить карту «командных строк» ​​для работы. Для этого используйте средства C++ 11. т. е. std :: function.
3- Нет стандартной структуры для проектов на С ++. Лично я использую рекомендуемую структуру Boost.