Thank you. That was very informative. 

On Tuesday, June 11, 2019 at 12:29:16 PM UTC+12, David Skinner wrote:
>
> Back in 1988, I was tasked with a code review for what seems like 150 
> programmers. Now I am very lazy, being a good programmer, I am willing to 
> spend all day automating a one hour job. They were all using an in house 
> OOPS language. I performed a cluster analysis of metrics using a Comal 
> program augmented with C packages (tool set I used as actuary). What I 
> discovered at that time is that most of the programmers metrics were in a 
> centroid cluster of characteristics and a very few were outliers. The 
> problems seemed to be in two groups, spaghetti code written by people who 
> cut and paste without comprehension and those unable to create useful 
> abstractions and created a plethora of classes and functions. Some of the 
> programmers had to be moved to QA, some of the programmers got pay raises 
> and stock options.
>
> With Go, all of our code reviews are manual, the very nature of the 
> language promotes the development of useful orthogonal abstractions.
>
> If you are working with a large group of programmers, I do believe in 
> using heuristics, but be aware of its limitations, the Heisenberg 
> Uncertainty Principle says that you cannot measure something without 
> changing it, if it is known that you are measuring something then that 
> measurement becomes useless.
>
> I do believe in a 5% to 10% duplication of effort. I will give the same 
> assignment to two different programmers, see who does the best job in the 
> least time. Best job does tend to be rather subjective. Least time is easy, 
> matter of time sheets. Least time is dangerous, i prefer a meticulous 
> programmer with complete documentation and a bug free proven product, but 
> is someone can do a quality job faster, you best measure it and compensate 
> so you do not lose that person..
>
> I wish you the best of luck but keep in mind that not everyone writes 
> idiomatic Go, most programmers will have a prior history with other 
> languages that may impact how they code. Poorly designed heuristics may 
> penalize good programmers for not doing things in an inferior way.
>
> On Thursday, June 6, 2019 at 2:58:19 PM UTC-5, Carl wrote:
>>
>> I'd like to know what people are using to measure the quality of their Go 
>> code bases and why. Specifically, I'm asking if:
>>
>>    1. There is a way to score a code base on quality that works with 
>>    idiomatic Go
>>    2. Use this metric in a CI system and fail the build if the quality 
>>    falls
>>    3. Use this metric in a team to detect trends over time and hot spots 
>>    where technical debt tends to accumulate
>>
>> It strikes me that Go is quite different to the usual set of popular 
>> languages and that even the most basic measures (cyclomatic complexity for 
>> example) may not be a good fit. 
>>
>> For example:
>>
>>    1. Adding proper error handling increases measured complexity, but is 
>>    actually preferable to not handling errors
>>    2. A switch case where a case statement contains one or more commas 
>>    is actually more maintainable, but would probably have the same score as 
>>    individual case statements on separate lines
>>
>> There are already a lot of tools that analyse Go code in several 
>> different ways - but which ones really work in the long term? 
>>
>> I'd like to ask the community which ones you've had good experiences with 
>> - a test of a good tool could be that a better score results in more 
>> idiomatic, maintainable code.
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/f939b63b-0619-47c0-a5ce-418a50aac934%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to