PDA

Просмотр полной версии : Офигительно читабельный код


Konctantin
26.04.2010, 09:48
Вот пример лабораторки одного студента, который учится на факультете программирования.
Я ф шоке, и куда смотрят преподаватели, обучая и проверяя работы их студентов.
http://paste2.org/p/794906

zergtmn
26.04.2010, 11:35
Я ф шоке, и куда смотрят преподаватели, обучая и проверяя работы их студентов.
Доучился до 4-го курса, про читабельность кода ни слова не было :)

Vladimir
26.04.2010, 12:23
Ну по сравнению с программой написанной как роман с переносом на новую строчку только из-за длины оной всеравно не сравнится ;) Хотя конечно криво написано. Названия функций кстати как не удиватьельно читабельны - так как явно сооветсвуют названиям частей уровнения как я понимаю, т.е. предметной области.

gR4mm
26.04.2010, 13:41
Вот пример лабораторки одного студента, который учится на факультете программирования.
Я ф шоке, и куда смотрят преподаватели, обучая и проверяя работы их студентов.
http://paste2.org/p/794906

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

Vladimir
26.04.2010, 13:43
Ну разбросанность кода говорит несколько о кривости рук и мозга ;)
В программировании долно быть чуство красоты кода иначе можно такой %№; наворотить...

Neggod
26.04.2010, 17:12
В любой книге по языкам программирования(по крайней мере, которые я читал) постоянно напоминают об "общих правилах написания кода": с новой строки, с отступами итд.

gR4mm
26.04.2010, 20:46
Ну не сказал бы, что с данным куском кода все прям так плохо, если говорить именно форматировании. На 4м курсе я видел код куда хуже. Да и сам перлы выдавал еще те.
Если же о, так сказать "стиле" написание, то оно возможно вызвано недостаточным знанием языка.

Anti
27.04.2010, 14:57
оооо! Счяс найду код девушки моего друга, будете плеваться как гопники семечками!

#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>

#define m 5

FILE *ish, *result;
int n; //kolichestvo strok
char *namefile_ish = "h:\\ish.dat",
*namefile_result ="h:\\result.dat";

void MyCreate()
{int a[m];
if((ish=fopen(namefile_ish,"w"))==NULL)
{printf("Error\n"); return; }
else printf("File is opened\n");
cout<<"kolichestvo strok: "; cin>>n;
randomize();
for(int i=0; i<n; i++)
{cout<<endl;
for(int j=0; j<m; j++)
{a[j]=random(10);
printf("%5d", a[j]);
}
fwrite(a, sizeof(a), 1, ish);
}
fclose(ish);
cout<<"\nFile was created";
}
////////////////////////////////////////
void MyAppend(int prirost)
{int a[m], i; char ch;
if((ish=fopen(namefile_ish,"a"))==NULL)
{printf("Error\n"); return; }
else printf("File is opened\n");

do
{cout<<endl;
a[0]=random(10);
for(i=1; i<m; i++)
{a[i]=a[i-1]+prirost;
cout<<a[i]<<" ";
}
fwrite(a, sizeof(a), 1, ish);
n++;
cout<<"\n*--exit";
ch=getch();
} while(ch!='*');
fclose(ish);
}
/////////////////////////////////////////////////
void MyRead(char *name)
{FILE * arf;
int a[m];
if((arf=fopen(name,"r"))==NULL)
{printf("Error\n"); return; }
clrscr();
fread(a, sizeof(a), 1, arf);
while(!feof(arf))

{cout<<"\n";
for(int j=0; j<m; j++)
printf("%5d", a[j]);
fread(a, sizeof(a), 1, arf);
}
fclose(arf);
}
///////////////////////////////////////////////////
void MyFindMax()
{
int a[m], i, max_in_str, max_in_file ;

if((ish = fopen(namefile_ish,"r"))==NULL)
{printf("Error fopen Ish\n"); return; }

if((result=fopen(namefile_result,"w"))==NULL)
{printf("Error fopen Result\n"); return; }

fread(a, sizeof(a), 1, ish);

max_in_str = a[0];
max_in_file = a[0];

while(!feof(ish))
{
if((a[1]-a[0])>0) //возрастает?
{
{for(i=1; i<m; i++)
if(a[i]<=a[i-1]) break;
}
max_in_str = a[m-1];
}
else
{
if((a[1]-a[0])<0) //убывает?
{for(i=1; i<m; i++)
if(a[i]>=a[i-1]) break;
}
max_in_str = a[0];
}
if(i==m)
{
fwrite(a, sizeof(a), 1, result);
if (max_in_file < max_in_str)
max_in_file = max_in_str;
cout<<"maximum stroki = "; cout<<max_in_str; cout<< "\n";
}

fread(a, sizeof(a), 1, ish);

}
fclose(ish);
fclose(result);

printf("\nmaximum of matrica = "); cout<<max_in_file;
}

int main()
{
int flag;
while(1)
{
cout<<"\n1 -- CREATE"<<endl<<
"2 -- APPEND UP"<<endl<<
"3 -- APPEND Down"<<endl<<
"4 -- READ Ishodny File"<<endl<<
"5 -- Find Maximum"<<endl<<
"6 -- Read VOZRASTAYUSHIE I UBYVAYUSHIE STROKI"<<endl<<
"0 -- EXIT"<<endl;

cin>>flag; switch(flag)
{
case 1:MyCreate(); break;
case 2:MyAppend(1); break;
case 3:MyAppend(-1); break;
case 4:MyRead(namefile_ish); break;
case 5:MyFindMax(); break;
case 6:MyRead(namefile_result); break;
case 0: return 0;
}
}
}

GriffonHeart
29.04.2010, 07:08
Сам на первом-втором курсе писал так же, пока не познакомился с мангосом ;)

ghostpast
29.04.2010, 07:14
Ну не сказал бы, что с данным куском кода все прям так плохо, если говорить именно форматировании. На 4м курсе я видел код куда хуже. Да и сам перлы выдавал еще те.
Если же о, так сказать "стиле" написание, то оно возможно вызвано недостаточным знанием языка.

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

MaxXx2021
29.04.2010, 13:20
Сразу видно человек книжку или лекцию не отрывал :)

Konctantin
29.04.2010, 15:21
Не хочу создавать новую тему, поэтому спрошу тут, кто-нибудь создавал Форму (оконное приложение) на чистом С? Если да, то покажите пример кода.

gR4mm
29.04.2010, 16:49
стиль кода мало от языка зависит
ну у кого как =)

Не хочу создавать новую тему, поэтому спрошу тут, кто-нибудь создавал Форму (оконное приложение) на чистом С? Если да, то покажите пример кода.
Мне кажется, или это называется маньячеством? =)
ЗЫ. если че, я си не знаю, да и вообще не программить не умею.

Konctantin
29.04.2010, 16:53
ну у кого как
Это вы что хотите сказать, что в одном языке программирования отступы надо делать, а в каком-то другом нет?
и как тогда ваш ответ увязывается с:
ЗЫ. если че, я си не знаю, да и вообще не программить не умею.

tempura
29.04.2010, 16:59
ну у кого как =)

Мне кажется, или это называется маньячеством? =)
ЗЫ. если че, я си не знаю, да и вообще не программить не умею. Следующий подобный пост, даже во Флудилке, будет трижды тщательнейшим образом рассмотрен со стороны пункта В-4 Правил Форума. :)



Konctantin
Это была провокация флуда. Прошу не поддаваться. Хватит и того, что меня постоянно на этот крючок ловят. :(

gR4mm
29.04.2010, 17:38
Следующий подобный пост, даже во Флудилке, будет трижды тщательнейшим образом рассмотрен со стороны пункта В-4 Правил Форума. :)
Спасибо, до свидания, можете удалить нах*й мой акк с этого форума, вместе со всеми сообщениями.

Anti
29.04.2010, 21:32
Это вы что хотите сказать, что в одном языке программирования отступы надо делать, а в каком-то другом нет?
и как тогда ваш ответ увязывается с:

.....
310

CruncH
30.04.2010, 08:33
Пишите на питоне, сразу проблема с отступами и скобочками отпадет, раз и навсегда. И будет приемлемый стиль. Но и на нем можно написать такого, что с первого раза не разобрать будет.

Vladimir
30.04.2010, 12:11
Но и на нем можно написать такого, что с первого раза не разобрать будет. Ну это как всегда. Никакой язык программирования сам по себе не обеспечит ясность программы на нем написанной - он только может предоставлять или не предоставлять такой возможности в разной мере.

Konctantin
30.04.2010, 12:31
Вчера общался с той "программисткой", что писала тот код, на что она ответила:
> А мне как-то пофик, лишь бы работало
я говорю, а как же другие будут читать тот код?
а она ответила:
> А зачем им его читать?

Вот собственно все ответы и получены, как же они, будущие программисты, будут дальше работать??

KiriX
30.04.2010, 12:34
Вчера общался с той "программисткой", что писала тот код, на что она ответила:
> А мне как-то пофик, лишь бы работало
я говорю, а как же другие будут читать тот код?
а она ответила:
> А зачем им его читать?

Вот собственно все ответы и получены, как же они, будущие программисты, будут дальше работать??
Ну если я пишу что-то для себя и выкладывать или открывать кому-то не собираюсь - красотой и даже комментами не запариваюсь.
Если код большое - тогда вот комменты допустимы. Хотя... Мне всё же приятно видеть красивый код, со стилем =)

DeusModus
30.04.2010, 12:53
Ну если я пишу что-то для себя и выкладывать или открывать кому-то не собираюсь - красотой и даже комментами не запариваюсь.


Грустной бывает ситуация, когда через пол года-год приходится возвращаться к ранее написанному и осеняет мысль, что проще заново написать. Посему комменты и очевидные названия наши друзья :)

Konctantin
30.04.2010, 13:10
вот вот, в самую точку

KiriX
30.04.2010, 13:44
Грустной бывает ситуация, когда через пол года-год приходится возвращаться к ранее написанному и осеняет мысль, что проще заново написать. Посему комменты и очевидные названия наши друзья :)
Ну вот зачем надо вырывать из контекста? =(
Вторую часть напрочь опустил и предложение заимело совсем иной смысл...

Minimajack
30.04.2010, 13:58
может конечно и не в тему, но в данном случае
какой смысл нагромождать код комментариями....
с учетом того что в первом посте явно мат-кие вычисления, там один фиг через пару недель без формул все равно не разберешься...
код коду рознь....и если писать
a=b+c; // мега сложение для вычесления дробной степени и дальше на пол листа..бла бла бла бла бла..

что тоже является антипаттерном...так что во всем надо знать меру
есть такая практика (код пишется исходя из книги...имхо врятли кто то выдумывает формулы сам) так вот :
1.в начале указывается книга.
2.в комментах к функциям(переменным и пр) указывается страница в книге...
исходники распространяются вместе с книгой(электронный вариант)...
все вопросы отпадают

комменты должны быть понятные и короткие

DeusModus
01.05.2010, 14:20
может конечно и не в тему, но в данном случае
какой смысл нагромождать код комментариями....
с учетом того что в первом посте явно мат-кие вычисления, там один фиг через пару недель без формул все равно не разберешься...
код коду рознь....и если писать
a=b+c; // мега сложение для вычесления дробной степени и дальше на пол листа..бла бла бла бла бла..

что тоже является антипаттерном...так что во всем надо знать меру
есть такая практика (код пишется исходя из книги...имхо врятли кто то выдумывает формулы сам) так вот :
1.в начале указывается книга.
2.в комментах к функциям(переменным и пр) указывается страница в книге...
исходники распространяются вместе с книгой(электронный вариант)...
все вопросы отпадают

комменты должны быть понятные и короткие

Вы так написали, как будто кто-то тут призывал к комментированию каждой строки тысячисимвольным комментарием ;)

Kirix, снова ты "непонимать".