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 |