2013-04-03 1 views
2

C'est une tâche simple, permettez-moi de le décrire brièvement!Le meilleur design pour un outil de ligne de commande

Je suis censé coder un outil de ligne de commande qui prend un nom de fichier comme argument, le fichier que je suis lecture va se compose de lignes, chaque ligne supposée être une commande à exécuter, la commande est suivie par ses arguments appropriés pour appliquer sur, pour préciser:

FILE 

sum; 1, 2, 3, 4 

Output 

10 

l'outil de ligne de commande doit satisfaire à ces exigences:

1- facile d'entretien, développé (plus commandes pourrait être ajouté dans le futur) et convivial.

2- Les arguments de ligne de commande peuvent être modifiés et de nouveaux peuvent être ajoutés.

3- Peut vivre comme un projet open-source, un arborescence source organisée.

Je m'attends à ce que les développeurs traitent le code source et le comprennent assez bien. Je suis un débutant dans ces choses, je suis un peu nouveau pour concevoir des modèles donc je ne sais pas beaucoup, je veux suivre les meilleures pratiques dans le développement de ce programme, je veux vraiment utiliser des modèles de conception le cas échéant et faire mon code est meilleur et plus propre, alors s'il vous plait conseillez-moi et écrivez moi cet outil de la meilleure façon possible, je ne veux pas écrire de code sale, je veux écrire un code de haute qualité plus loin.

S'il vous plaît conseiller et n'hésitez pas à critiquer ce que je viens de dire.

Une dernière chose, je vais utiliser C++!

Merci!

+0

Il ne s'agit pas tant d'écrire un analyseur que de concevoir un interpréteur pour un langage, ce qui n'est pas très trivial. Vous voudrez peut-être voir ce qu'est un "lexer" et un "parser". Flex + Bison est un ensemble d'outils pour C générer automagiquement, pour C++, vous pouvez regarder dans Boost.Spirit. – TC1

+1

Pour critiquer ce que vous venez de dire: Ce dont vous avez besoin est d'embaucher un programmeur, ce qui n'est pas ce que ce site est pour. Ce site, en revanche, s'adresse aux personnes qui écrivent leur propre code, ont déjà fait beaucoup d'efforts, ont fait des recherches, et ont rencontré un obstacle spécifique, qu'ils démontrent avec un morceau d'exemple court, minimal et autonome. . –

+0

Je sais ce qu'est un analyseur, il n'est pas éligible ici car les commandes peuvent être facilement modifiées et ce n'est pas un bon moyen de modifier le code source. –

Répondre

0

1- Boost.Program_options est votre ami quand il s'agit d'analyser les options de la ligne de commande.
2- Jetez un coup d'œil au command pattern. Bien qu'il soit plus facile à implémenter dans un langage qui a des facilités de réflexion, il est toujours possible d'avoir une carte de "chaînes de commande" mappée pour fonctionner. Veuillez utiliser les fonctionnalités C++ 11 pour cela. c'est-à-dire std :: function.
3- Il n'y a pas de structure standard pour les projets C++. Personnellement, j'utilise la structure recommandée par Boost.

Questions connexes