On 17 May 2013 16:57, Denny Vrandečić <denny.vrandecic(a)wikimedia.de> wrote:
Hey,
in order to sanity check the code we have written in the Wikidata project,
we have asked an external company to review our code and discuss it with
the team. The effort was very instructional for us.
We want to share the results with you. The report looks dauntingly big, but
this is mostly due to the appendixes. The first 20 pages are quite worth a
read.
I read half of the report. Here is what I got out of it:
* We should do dependency injection to make code testable
* We should adhere to the single responsibility principle to make code
testable and less complex
* MediaWiki in many places (special pages, api, hooks to name few)
makes it impossible or at least very hard to do the above for most
classes
They proposed a solution (work around in Wikibase) to allow writing
better code in Wikibase. In section 4.1.6 it reads "The sketched
approach fulfills all presented requirements: The dependency injection
mechanism is kept simple and easy to understand". But as a reader I
did not understand how it works or what would be the practical gains
for the code complexity that the solution itself introduces. I would
attribute some part of this to the many typos, mistakes and non-fluent
language in the text and examples. One example:
"For example, if the a DependencyManager as configured in Illustration 1:
DependencyManager is asked to retrieve the object with the key “mail”, it will
ask the registered DatabaseBuilder to create that object and return it."
I am curious whether there was any discussions if and how these issues
could be fixed in MediaWiki core? Or do we need[1] to figure that out
on our own?
[1] I see that I already jumped on the "how to get there" part, but I
guess I should first ask: is there sufficient mass that thinks there
is an issue and that the issue should be fixed? I think that there is
definitely a need for core to adopt better coding practices to reduce
code complexity and allow easier unit testing. Just like the move from
svn to git and gerrit, it will need a lot of effort and can annoy
people, but in the end we will be better than before.
-Niklas
--
Niklas Laxström