Ich habe mich gerade beim Schreiben einer generischen Methode gefragt, wo die Grenze "zumutbaren" Codes liegt, und ab welcher Komplexität man einfach aufgibt und schreiend weg rennt.
Als Diskussionsgrundlage einmal die Methode selbst:
Im Moment, in dem ich das schreibe, ist mir völlig klar, was das tut, dass das auch korrekt ist (hier: weil ich das Original aus Haskell kenne), und weil ich auch mit meinen (nicht ganz standardkonformen, aber wohlbegründeten) Namenskonventionen vertraut bin. Andererseits würde ich in fremden Code mächtig stutzen. Dummerweise lässt sich das Ding momentan nicht sinnvoll vereinfachen (Closures würden etwas helfen), es hat halt einfach 6 generische Parameter.
Was denkt ihr?
Als Diskussionsgrundlage einmal die Methode selbst:
Java:
public static <M,A,N,B,P,C> F2<_<_<µ,M>,A>,_<_<µ,N>,B>,_<_<µ,P>,C>> lift2IdentityT(final F2<_<M,A>,_<N,B>,_<P,C>> fn) {
return new F2<_<_<µ,M>,A>,_<_<µ,N>,B>,_<_<µ,P>,C>>() {
@Override
public _<_<IdentityT.µ, P>, C> $(_<_<IdentityT.µ, M>, A> nestedA, _<_<IdentityT.µ, N>, B> nestedB) {
IdentityT<M,A> identityA = IdentityT.narrow(nestedA);
IdentityT<N,B> identityB = IdentityT.narrow(nestedB);
return new IdentityT<P,C>(fn.$(identityA.get(), identityB.get()));
}
};
}
Im Moment, in dem ich das schreibe, ist mir völlig klar, was das tut, dass das auch korrekt ist (hier: weil ich das Original aus Haskell kenne), und weil ich auch mit meinen (nicht ganz standardkonformen, aber wohlbegründeten) Namenskonventionen vertraut bin. Andererseits würde ich in fremden Code mächtig stutzen. Dummerweise lässt sich das Ding momentan nicht sinnvoll vereinfachen (Closures würden etwas helfen), es hat halt einfach 6 generische Parameter.
Was denkt ihr?