а двойка ( не смотря откуда числа) скорее всего связано с тем , что one-of ошибка может быть с каждой стороны в этих алгоритмах и что-бы не заморачиватся сразу зарезервиловал заведомо достаточное.
расскажи pls реальную практику(без имён :) ) документирования - и желательно с анализом почему те, а не эти практики описания реализаций использовались, т.е. насколько человеческий(произвол лиц постулирующих правильный взгляд) фактор ролял в реальной разработке в которой ты принимал участие. это возможно?
- пусть Эпсилон это , Хм Эпсилон слишком мало , пусть Икс это ...
2. урок в военной академии, занятие у лётчиков ( что то про Крылова и его басни )
лектор:
- в военное время синус угла может достигать и пяти.
зы. вопрос контекста - локальный (т.е 10-15 строк) контекст позволяет видеть целокупно предназначение локально именуемого - более длинное имя просто более загромождает образ всей «области контекста»
зы. вопрос контекста - локальный (т.е 10-15 строк) контекст позволяет видеть целокупно предназначение локально именуемого - более длинное имя просто более загромождает образ всей «области контекста»
Работадатели не любят наркоманов.
long n,m,i,p,r,s,k,v,a,b;
long o[500002];
Вы же так шутите?
Да Вы же потенциальный gnu-девелопер.
Ну я бы не стал такие имена переменным давать (за исключением счетчиков).
Ну то есть в программе на 10 строк можно, но в проекте на 100к и выше такие переменные кровушку попортят, учитывая что сишка регистронезависимая, в ней нет неймспейсов и переменные не являются полями класса.
Переменные должны называться так, чтоб исключалась любая возможность дублирования.
Даже в хелловордах нечего себя приучать писать
Посмотри на алгоритм. Предположим, что переменные в нем будут длиной в 5-10 символов. Теперь представь насколько эта стена текста будет нечитаемой.
В функциях-числодробилках оправдано использование коротких переменных в 1-2 символа, это позволяет читающему не упустить суть алгоритма за именами переменных. Единственное, что я бы порекомендовал — давать неформальное описание алгоритма в пару предложений и прокомментировать смысл переменных. UPD: (имеется в виду уже реальный проект, а не олимпиадная задачка)
Да можно использовать короткие локальные переменные, только осторожно, с пояснениями, да и переменных таких должно быть 2-5, а не целый алфавит — эти
n,m,i,p,r,s,k,v,a,b;
не упрощают читаемость, тем паче у тс-а же все переменные такие, и локальные, в функциях, и глобальные.
ИМХО это все превратится в кровавую баню при большом количестве кода.
я хоть лицо и не заинтересованное, но скажу, что это решение на тимус онлайн, зачастую там удобно использовать такие имена, какие даны в условие задачи
Это к чему? Моё сообщение было о том, что навыки у него на уровне студента первокурсника, о промышленном кодировании не знающего ничего. Что, кстати, не противоречит твоему предыдущему сообщению.
Таким первокурсникам у меня декан по голове стучал и обещал, что сессию по языкам программирования они не сдадут и вылетят, надо сказать обещание он сдержал.
У меня был физфак и курс назывался не «языки программирования», а «информатика» и там был адовый C++ вперемешку с C и матлабом и преподы сами толком херово разбирались (как я теперь уже понимаю).
PS Ах да, в первом семестре (а всего их было два) был word и excel.
С - полностью регистрозависим это линковка накладывает ограничения на длину внешних имён которая значима и регистра - в зависимости от линковщика(который зависит от операционки(...) но не полностью ибо в том же С++ нет полной бинарной совместимости даже в одной оси)
Ссылку ты к месту привёл. Правильно. Потому, что Plan9 так написан он и не взлетит никак (с конца 80-ых пилят притом не ради хобби, как Торвальдс начинал, а за деньги, а толку мало, тот же Linux только в 91 году появился, а толку с него в разы больше), т.к. разработчики Plan9 вместо разработки вынуждены такой код разбирать. Не учись на плохом в общем.
Почитал твои работы, не умееш ты на C писать. Покажи код где хотя бы штук 100 функций, а не одна майн.
А все твои if/else, убивают нафиг весь перформанс и поддержку.
Не говоря уже про то что никто кроме тебя не поймёт что ты хотел сказать «c=10». Везде сплошные magic numbers.
нечитабельные имена переменных-привет из 90-х. я кстати тогда и то читабельнее переменные обзывал. даже макроассемблер типа FASM позволяет это делать, ну не в каменном веке же живем
Не строй из себя большего дурачка, чем ты есть. Нормальные имена позволяют читать код построчно, без необходимости сначала полностью разобрать функцию.
#include <u.h>
#define NOPLAN9DEFINES
#include <libc.h>
long
p9write(int fd, void *buf, long count)
{
long res, written;
written = 0;
while(written < count){
res = write(fd, (char*)buf+written, count-written);
if(res <= 0)
return written ? written : res;
written += res;
}
return written;
}
твои written res могут быть такими ибо локальны, но вот уже count несёт более конкретную семантику чем более абстрактное n(которое если и имеет семантику , так количества общего , но не конкретно как count-счётчик пробегающий)
fd более конкретно чем f а необходимости различать тут нет.
т.е возможно автоматический сокращение имён(по первым буквам ,с сохранием взаимно однозначного ) перед выкладыванием в общий доступ и было ,
но скорее в тех(в отличии от моих поделий которые лимитировались временем) сырцах как раз таки очень проработаная лаконичная номенклатура именования поэтому имена лапидарны.
и если уж переписывать (ты ведь для улучшения добавил 3 вариант ретурна (эдак сократил процессору работу))
long
p9write(int f, void *av, long n)
{
char *a=av;
long m, t;
for(t = m = 0; n ; t += m){
m = write(f, a+=m, n-=m);
if(m > 0)
continue;
if(t == 0)
return m;
break;
}
return t;
}
Ты дурак? Мало того что код теперь нечитаемый, у тебя намного больше действий, а твоя проверка на if и continue ето просто тормоз. Почитай про бранчи в процессоре.
Я, черт подери, твой код понимаю. K&R каждый год перечитываю.
Во-первых, фичи языка используются по необходимости, а не из выпендрежа, это просто глупо.
Во-вторых, ты их не используешь там, где это необходимо. Можешь почитать, как работает тот же switch и какие преимущества он тебе даст, если ты заменишь свои простыни из if/else/continue/break на нормальный оператор ветвления. Это просто кошмарно.
Ты бы лучше не на ЛОРе срался, а хороший код почитал. Движок Quake 3 хорошо написан, dwm тот же, исходники линукса наконец. Там такая срань господня не проходит.