Я не могу полагать, что кто-либо думает, что 150 строк чего-либо более просты, чем 20 строк чего-то.
Идут с этими 20 строками и защищают Ваших коллег следующим образом:
Документируют каждый инвариант структуры данных и каждый нетривиальный инвариант цикла. Зарегистрируйте их не в комментариях, а в фактическом коде, который проверяет инварианты. Проверка может быть выключена во время производства.
, Если Вы используете математические формулы в своем коде или произойти в Вашем коде, , включают ссылки в комментарии (или статические строки). Идеально включайте две ссылки: веб-ссылка это, вероятно, будет доступно в секундах и хорошо расцененном учебнике, это, вероятно, останется в печати долгое время и будет найдено в университетских библиотеках.
При понимании кода требует специальных экспертных знаний (понимание дифференциальных уравнений в частных производных, градуса в физике, теории Galois, Вы называете его), затем для защиты себя можно хотеть перейти к управлению и сказать, что "У меня есть эти специальные экспертные знания, которые позволяют мне записать код, который меньше (и поэтому быстрее, более надежен, и легче поддержать), но когда необходимо заменить меня, Вы оказываетесь перед необходимостью нанимать кого-то с подобными экспертными знаниями. Что Вы хотите, чтобы я сделал?" Будет полезно, если можно сказать управление, как легко такие экспертные знания могут быть получены. Например, много людей с дипломами инженера может изучить дифференциальные уравнения в частных производных, но теоретики Galois скорее редко встречаются.
P.S. Вот комментарий в качестве примера из проекта хобби, таким образом, я могу отладить свой собственный код позже:
/*
* Compute the position of a point partially along the geodesic from
* pt1.lat,pt1.lon to pt2.lat,pt2.lon
*
* Ref: http://mathworld.wolfram.com/RotationFormula.html
*/
Вот кое-что, что я сделал на основе работы других, в частности serializeAnything :
/* jQuery.values: get or set all of the name/value pairs from child input controls
* @argument data {array} If included, will populate all child controls.
* @returns element if data was provided, or array of values if not
*/
$.fn.values = function(data) {
var els = $(this).find(':input').get();
if(typeof data != 'object') {
// return all data
data = {};
$.each(els, function() {
if (this.name && !this.disabled && (this.checked
|| /select|textarea/i.test(this.nodeName)
|| /text|hidden|password/i.test(this.type))) {
data[this.name] = $(this).val();
}
});
return data;
} else {
$.each(els, function() {
if (this.name && data[this.name]) {
if(this.type == 'checkbox' || this.type == 'radio') {
$(this).attr("checked", (data[this.name] == $(this).val()));
} else {
$(this).val(data[this.name]);
}
}
});
return $(this);
}
};
Ознакомьтесь с моим плагином jQuery Populate:
http://www.keyframesandcode.com/code/ development / javascript / jquery-populate-plugin /
Заполняет все элементы формы, а также ярлыки и любые содержащиеся в нем элементы HTML.