34 lines
1.1 KiB
Markdown
34 lines
1.1 KiB
Markdown
## CHANGES
|
||
|
||
### PROBLEM
|
||
+ adding new fields makes the code complex
|
||
+ needs to update: `result`, `parser`, `summarizer`
|
||
+ needs to add new fields to `parser`: `totalVisits` + `totalUniques`
|
||
+ in `parse()`: repeating line errors
|
||
+ if we parsing out of it we'd need to have *parser — superfluous
|
||
|
||
### SOLUTION
|
||
+ move all the result related logic to result.go
|
||
|
||
+ move `parser.go/result` -> `result.go`
|
||
+ move `parser.go/parsing` logic -> `result.go`
|
||
|
||
+ add `addResult` -> `result.go`
|
||
+ remove `parser struct`'s: `totalVisits`, `totalUniques`
|
||
+ change `update()`'s last line: `p.sum[r.domain] = addResult`
|
||
|
||
+ remove `(line #d)` errors from `result.go`
|
||
+ add: `return r, err` — named params are error prone
|
||
+ always check for the error first
|
||
+ `if r.visits < 0 || err != nil` -> `if err != nil || r.visits < 0`
|
||
|
||
+ `parser.go`: check the `parseFields()`:
|
||
```golang
|
||
r, err := parseFields(line)
|
||
if err != nil {
|
||
p.lerr = fmt.Errorf("line %d: %v", p.lines, err)
|
||
}```
|
||
|
||
+ - `parser.go` and `summarize.go`
|
||
- remove `total int`
|
||
- let `summarize()` calculate the totals |