Modular C
Parse Pipeline
Separate helper functions make a small processing pipeline easier to read.
Parse Pipeline
parse_pipeline.c
#include <stdio.h>
static int parse_digit(char digit) {
return digit - '0';
}
static int valid_digit(int value) {
return value >= 0 && value <= 9;
}
static int score_digit(int value) {
return value * 10;
}
int main(void) {
char digit = ;
int value = parse_digit(digit);
int score = 0;
if (valid_digit(value)) {
score = score_digit(value);
}
printf("score=%d\n", score);
return 0;
}
#include <stdio.h>
static int parse_digit(char digit) {
return digit - '0';
}
static int valid_digit(int value) {
return value >= 0 && value <= 9;
}
static int score_digit(int value) {
return value * 10;
}
int main(void) {
char digit = ;
int value = parse_digit(digit);
int score = 0;
if (valid_digit(value)) {
score = score_digit(value);
}
printf("score=%d\n", score);
return 0;
}
#include <stdio.h>
static int parse_digit(char digit) {
return digit - '0';
}
static int valid_digit(int value) {
return value >= 0 && value <= 9;
}
static int score_digit(int value) {
return value * 10;
}
int main(void) {
char digit = ;
int value = parse_digit(digit);
int score = 0;
if (valid_digit(value)) {
score = score_digit(value);
}
printf("score=%d\n", score);
return 0;
}
pipeline
Each function performs one step and passes a value to the next step.
validation step
A validation helper can keep bad values from reaching the final calculation.