LINUX.ORG.RU

Ответ на: комментарий от catap

большие числа по условиям верхняя граница.

а двойка ( не смотря откуда числа) скорее всего связано с тем , что one-of ошибка может быть с каждой стороны в этих алгоритмах и что-бы не заморачиватся сразу зарезервиловал заведомо достаточное.

могло и 10 быть.

qulinxao ★★☆
() автор топика
Ответ на: комментарий от Deleted

расскажи pls реальную практику(без имён :) ) документирования - и желательно с анализом почему те, а не эти практики описания реализаций использовались, т.е. насколько человеческий(произвол лиц постулирующих правильный взгляд) фактор ролял в реальной разработке в которой ты принимал участие. это возможно?

qulinxao ★★☆
() автор топика
Ответ на: комментарий от vvviperrr

читай в обратном хронологическом

qulinxao ★★☆
() автор топика
Ответ на: комментарий от peregrine

e - это ещё и число эйлера.

1. урок в военной академии

лектор:

- пусть Эпсилон это , Хм Эпсилон слишком мало , пусть Икс это ...

2. урок в военной академии, занятие у лётчиков ( что то про Крылова и его басни ) лектор:

- в военное время синус угла может достигать и пяти.

зы. вопрос контекста - локальный (т.е 10-15 строк) контекст позволяет видеть целокупно предназначение локально именуемого - более длинное имя просто более загромождает образ всей «области контекста»

qulinxao ★★☆
() автор топика
Последнее исправление: qulinxao (всего исправлений: 1)
Ответ на: комментарий от qulinxao

зы. вопрос контекста - локальный (т.е 10-15 строк) контекст позволяет видеть целокупно предназначение локально именуемого - более длинное имя просто более загромождает образ всей «области контекста»

Работадатели не любят наркоманов.

long n,m,i,p,r,s,k,v,a,b;

long o[500002];

Вы же так шутите? Да Вы же потенциальный gnu-девелопер.

Freyr69 ★★★
()
Ответ на: комментарий от staseg

Ну я бы не стал такие имена переменным давать (за исключением счетчиков). Ну то есть в программе на 10 строк можно, но в проекте на 100к и выше такие переменные кровушку попортят, учитывая что сишка регистронезависимая, в ней нет неймспейсов и переменные не являются полями класса. Переменные должны называться так, чтоб исключалась любая возможность дублирования. Даже в хелловордах нечего себя приучать писать

n,m,i,p,r,s,k,v,a,b;

Freyr69 ★★★
()
Ответ на: комментарий от Freyr69

Посмотри на алгоритм. Предположим, что переменные в нем будут длиной в 5-10 символов. Теперь представь насколько эта стена текста будет нечитаемой.

В функциях-числодробилках оправдано использование коротких переменных в 1-2 символа, это позволяет читающему не упустить суть алгоритма за именами переменных. Единственное, что я бы порекомендовал — давать неформальное описание алгоритма в пару предложений и прокомментировать смысл переменных. UPD: (имеется в виду уже реальный проект, а не олимпиадная задачка)

staseg ★★★★★
()
Последнее исправление: staseg (всего исправлений: 1)
Ответ на: комментарий от Freyr69

Альзо читать все эти

n,m,i,p,r,s,k,v,a,b;

невозможно. Вот s - это что, константа, площадь, какой-то коэффициент? Это же потом будет очень тяжело читать.

Freyr69 ★★★
()
Ответ на: комментарий от staseg

Да можно использовать короткие локальные переменные, только осторожно, с пояснениями, да и переменных таких должно быть 2-5, а не целый алфавит — эти

n,m,i,p,r,s,k,v,a,b;

не упрощают читаемость, тем паче у тс-а же все переменные такие, и локальные, в функциях, и глобальные. ИМХО это все превратится в кровавую баню при большом количестве кода.

Freyr69 ★★★
()
Ответ на: комментарий от sshvabodka

Если уж нужно как-то отдельно обрабатывать не-ascii символы, то есть isascii

rand
()
Ответ на: комментарий от Freyr69

я хоть лицо и не заинтересованное, но скажу, что это решение на тимус онлайн, зачастую там удобно использовать такие имена, какие даны в условие задачи

IvanR ★★★
()
Ответ на: комментарий от DELIRIUM

Не, у него есть навыки. Но фиговатые с точки зрения прикладнухи. И еще он рузскей езыг харашо знаить.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Не, у него есть навыки

Ну с такими «навыками» я на первом курсе решал за полгруппы лабы и зачёты по программированию, но 45 тыщ не требовал за это.

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Это к чему? Моё сообщение было о том, что навыки у него на уровне студента первокурсника, о промышленном кодировании не знающего ничего. Что, кстати, не противоречит твоему предыдущему сообщению.

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от DELIRIUM

Таким первокурсникам у меня декан по голове стучал и обещал, что сессию по языкам программирования они не сдадут и вылетят, надо сказать обещание он сдержал.

peregrine ★★★★★
()
Ответ на: комментарий от peregrine

У меня был физфак и курс назывался не «языки программирования», а «информатика» и там был адовый C++ вперемешку с C и матлабом и преподы сами толком херово разбирались (как я теперь уже понимаю).

PS Ах да, в первом семестре (а всего их было два) был word и excel.

DELIRIUM ☆☆☆☆☆
()
Последнее исправление: DELIRIUM (всего исправлений: 1)
Ответ на: комментарий от qulinxao

Дядя, тебя читабельный код писать не учили? A switch пользоваться? Может, хотя бы int main(void) вместо void main()?

эх... книжки бы умные почитал сначала. потом за вами софт переписывать

mazdai ★★★
()
Ответ на: комментарий от mazdai

расскажи тем же аршином о недостатках вот этого поделия: http://swtch.com/usr/local/plan9/src/lib9/write.c

что же касается книжек и регистрозависимости С

С - полностью регистрозависим это линковка накладывает ограничения на длину внешних имён которая значима и регистра - в зависимости от линковщика(который зависит от операционки(...) но не полностью ибо в том же С++ нет полной бинарной совместимости даже в одной оси)

дерзай дальше.

qulinxao ★★☆
() автор топика
Ответ на: комментарий от qulinxao

Ссылку ты к месту привёл. Правильно. Потому, что Plan9 так написан он и не взлетит никак (с конца 80-ых пилят притом не ради хобби, как Торвальдс начинал, а за деньги, а толку мало, тот же Linux только в 91 году появился, а толку с него в разы больше), т.к. разработчики Plan9 вместо разработки вынуждены такой код разбирать. Не учись на плохом в общем.

peregrine ★★★★★
()
Ответ на: комментарий от DELIRIUM

зачем так самоуничижаешся?

такой(полгруппе) умелый тогда(2004-5года?), а сейчас не Бил Гейтс али Алан Кох. что случилось , где пошло как?

дык инфляция.

и где требования?

по существу , что посоветуешь?

qulinxao ★★☆
() автор топика
Ответ на: комментарий от mazdai

по конкретней , какое место нечитабельно и насколько нечитабельно.

по конкретней , где годнее переключатель

qulinxao ★★☆
() автор топика
Ответ на: комментарий от redgremlin

от чего код то обфусцитирован???

с чего он врайт онли?

от того что на «лве нет таблички 'лев' и следует быть в курсе какие признаки какого животного и как какое животное ведёт»?

qulinxao ★★☆
() автор топика
Ответ на: комментарий от qulinxao

от чего код то обфусцитирован???
с чего он врайт онли?

" - А почему его зовут Борис-хрен-попадёшь? - Да потому что в него хрен попадёшь!"
Потому что это нечитабельный говнокод, вот с чего.

redgremlin ★★★★★
()
Ответ на: комментарий от mazdai

Разумеется он регистрозависим, это меня тут вштырило, раз такое пишу.

Freyr69 ★★★
()
Ответ на: комментарий от redgremlin

т.е для понимание нужно его(код) прочитать?

нету имени в ПОЛЭКРАНА

АВОТТЕКУЩИЙНАКОПИТЕЛЬНЫЙСЧЁТЧИККОТОРЫЙСОДЕРЖИТВСЕБЕЧИСЛОБАЙТ_ВСЛЕДУЮЩЕЙВЕРСИИСЛОВ_АВИДЕАЛЕРУНКОТОРЫЕМЫУСПЕШНОЗАПИСАЛИВИЗПРОЧИТАНОГОПОЛУЧЕНОГОБУФЕРАРАЗМЕРА

qulinxao ★★☆
() автор топика

Нда..

Почитал твои работы, не умееш ты на C писать. Покажи код где хотя бы штук 100 функций, а не одна майн. А все твои if/else, убивают нафиг весь перформанс и поддержку. Не говоря уже про то что никто кроме тебя не поймёт что ты хотел сказать «c=10». Везде сплошные magic numbers.

CyberK
()
Ответ на: комментарий от qulinxao
while(z[p/2].d>t.d){z[p]=z[p/2];p=p/2;z[p]=t;}

if(..) {break;} x10

magic numbers

нечитабельные имена переменных-привет из 90-х. я кстати тогда и то читабельнее переменные обзывал. даже макроассемблер типа FASM позволяет это делать, ну не в каменном веке же живем

mazdai ★★★
()
Последнее исправление: mazdai (всего исправлений: 1)
Ответ на: комментарий от qulinxao

Не строй из себя большего дурачка, чем ты есть. Нормальные имена позволяют читать код построчно, без необходимости сначала полностью разобрать функцию.

#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;
}
redgremlin ★★★★★
()
Ответ на: комментарий от redgremlin

тебе возможно известно о «плотно сбитый код»

твои written res могут быть такими ибо локальны, но вот уже count несёт более конкретную семантику чем более абстрактное n(которое если и имеет семантику , так количества общего , но не конкретно как count-счётчик пробегающий)

fd более конкретно чем f а необходимости различать тут нет.

т.е возможно автоматический сокращение имён(по первым буквам ,с сохранием взаимно однозначного ) перед выкладыванием в общий доступ и было ,

но скорее в тех(в отличии от моих поделий которые лимитировались временем) сырцах как раз таки очень проработаная лаконичная номенклатура именования поэтому имена лапидарны.

qulinxao ★★☆
() автор топика
Ответ на: комментарий от redgremlin

и если уж переписывать (ты ведь для улучшения добавил 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;
}

:)

qulinxao ★★☆
() автор топика
Ответ на: комментарий от mazdai

Тебе слова ПИРАМИДАЛЬНАЯ не хватало для понимания , что 2 наименьшее из целых большее 1 ?

Циклы с выходом из середины, совсем не?

ну и про switch , гиде?

qulinxao ★★☆
() автор топика
Ответ на: комментарий от qulinxao

WHUT?

Ты дурак? Мало того что код теперь нечитаемый, у тебя намного больше действий, а твоя проверка на if и continue ето просто тормоз. Почитай про бранчи в процессоре.

CyberK
()

Просто ради интереса, ты сам-то можешь придумать какие реальные задачи может решить такой код как у тебя?

Tark ★★
()
Ответ на: комментарий от qulinxao

О боги, ты умудрился говнокод сделать ещё говнистее.

redgremlin ★★★★★
()
Ответ на: комментарий от qulinxao

Я, черт подери, твой код понимаю. K&R каждый год перечитываю. Во-первых, фичи языка используются по необходимости, а не из выпендрежа, это просто глупо. Во-вторых, ты их не используешь там, где это необходимо. Можешь почитать, как работает тот же switch и какие преимущества он тебе даст, если ты заменишь свои простыни из if/else/continue/break на нормальный оператор ветвления. Это просто кошмарно.

Ты бы лучше не на ЛОРе срался, а хороший код почитал. Движок Quake 3 хорошо написан, dwm тот же, исходники линукса наконец. Там такая срань господня не проходит.

mazdai ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.