Sto cercando feedback sul design del mio programma.
Ho una chiamata allo script shell function.sh che definisce molte funzioni di aiuto. Il mio intento è quello di utilizzare quelle funzioni di bash definite in functions.sh in un programma C. Lo sto facendo in modo che non debba riscrivere di nuovo la funzionalità di bash (in functions.sh) in C. Voglio usare una libreria comune per le funzioni di cui ho bisogno (che è functions.sh).
Ecco il mio codice C e functions.sh
Codice C:
#include <stdlib.h>
#include <sys/wait.h>
#include <stdio.h>
void shellCall(char * command)
{
int status, commandexitcode=0;
if(command == NULL)
{
printf("NULL command string sent\n");
exit(1);
}
status = system(command);
if(status == -1)
{
printf("Error during call, value %d\n", status);
exit(1);
}
if (WIFEXITED(status))
{
commandexitcode = WEXITSTATUS(status);
if (commandexitcode != 0)
{
printf("non zero exit code: %d\n", commandexitcode);
exit(1);
}
}
else
if (WIFSIGNALED(status))
...
}
int main(int argc,char **argv)
{
char command[100]; //command
int i = 0;
for (i = 1 ; i <= 10 ; i++)
{
sprintf( command, "source $PWD/functions.sh ; i=%d ; myfunc %d", i,i );
shellCall(command);
}
}
functions.sh:
#!/bin/sh
# functions.sh
myfunc()
{
echo "I received $1"
}
Si noti che ho solo mostrato un esempio molto semplice di come sto usando le funzioni in functions.sh. In realtà functions.sh ha molte funzioni, alcune delle quali implementano una logica decente.
Le mie domande - Ho bisogno di feedback sui seguenti aspetti.
-
È una cattiva pratica di programmazione (qualcosa che farà impazzire gli sviluppatori esperti e senior quando vedono questo) di usare le chiamate system () per chiamare le funzioni in functions.sh come ho fatto io?
-
Se si tratta di una cattiva pratica, quali sono le ragioni (tecniche e non) per le quali è considerata una cattiva pratica di programmazione?
-
Quali modifiche dovrei apportare al mio codice C in modo che gli sviluppatori esperti e senior lo trovino accettabile?