Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.01.2012, 01:23   #131
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
if(cache.size()>0 && cache.back().getIdent()==L_EOF)
	return cache.back();
if(pos>=cache.size())
	Scan();
Вадим, вот тебе пример из реального кода.
при отладке мне было важно понять заходит выполняется ли условие или нет.
Цитата:
роме того некоторые даже умудряются создавать однострочные функции-мемберы в классе.
это без фигурных скобок чтоль?
Код:
void method() doAnotherMethod();
?
Цитата:
в качестве бесплатного бонуса прилагается несформированный стековый кадр, а значит, отсутствие доступа к this.
не вижу связи между кадром стека и this.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 07.01.2012, 09:59   #132
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Так для удобства чтения и экономим. Меньше строк, больше кода на экране без прокрутки.
Ага, Вы же наверняка код сразу экранами считываете, а я грешный его построчно читаю с монитора... Сколько усилий Вы затрачиваете на прокрутку экрана ? Я уже лучше палец покачаю, зато потом меньше времени уходит на отладку. И вообще (это не про Вас уже Аригато), в обсуждении как мне кажется очень много эмоциональных составляющих - типа Ваш код не правильный, потому что его долго писать. Так не пишите Вас кто заставляет что ли? Я пишу, мне не сложно. Опять же не с бухты барахты, а потому что те лишние 5 минут выльются Вам 30 минут отладки в тех вопросах, в которых у меня не будет проблем. Вот кстати, если брать отладку - все говорят про условие в одну строку и совершенно молчат о каком-нибудь while. А с однострочными циклами между прочим маяты больше чем с условиями. Опять же второй пункт - Ваша программа неудобна - много текста, тоже прям такой аргумент... интересный .
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 07.01.2012 в 18:46.
Utkin вне форума Ответить с цитированием
Старый 07.01.2012, 15:17   #133
anyx
Форумчанин
 
Регистрация: 10.09.2009
Сообщений: 352
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
я выкину такой компиль
А вот это зря. Создатели компилятора заботятся о вас, минимизируют вероятность ошибиться. Да и наверняка они получше вас разбираются в психологических аспектах написания кода и в причинах ошибок (я не про создателей С++ говорю, а про ориентированные на безопасность и удобство языки)

P.S. А вообще я ответил вам, ибо вы и меня этим задели - мой собственный компилятор тоже не скомпилирует без фигурных скобок (или выдаст warning, а ещё не решил, как оставить)

Последний раз редактировалось anyx; 07.01.2012 в 15:32.
anyx вне форума Ответить с цитированием
Старый 08.01.2012, 19:01   #134
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
Код:
if(cache.size()>0 && cache.back().getIdent()==L_EOF)
	return cache.back();
if(pos>=cache.size())
	Scan();
Вадим, вот тебе пример из реального кода.
при отладке мне было важно понять заходит выполняется ли условие или нет.
Так я же ранее говорил, что я поддерживаю перенос тела условия на новую строку, в этом случае при пошаговой трассировке видно, куда пошло, куда не пошло, да и полная свобода при расстановке точек останова.

Код:
if Condition
	Operation;
_______________

Кстати, по поводу горизонтальных отступов хотел ещё сказать вот что.
Поначалу я писал так, чтобы весь код, который вкладывается в некий оператор, располагался полностью правее своего "контейнера", то есть
Код:
for i:=1 to n do
		for j:=0 to M do
				for k:=1 to M+N-1 do
							// какой-то код
Но иногда возникает горизонтальная прокрутка, вот мне она не удобна точно. Поэтому, здесь следует горизонтальными отступами не разбрасываться, а писать по экономнее:
Код:
for i:=1 to n do
	for j:=0 to M do
		for k:=1 to M+N-1 do
			// какой-то код
Вообще, мне только что пришла мысль в голову, что, ИМХО, следует вообще избегать возникновения горизонтальной прокрутки.
Мне ещё ранее казалось, что неспроста в Dephi (в редакторе кода) есть вертикальная линия. Возможно, чтобы за неё не "залазили". Хотя, я посмотрел коды подключаемых по умолчанию модулей - всё же код иногда за неё залазит.
Изображения
Тип файла: jpg 123321.JPG (21.4 Кб, 93 просмотров)
Вадим Мошев вне форума Ответить с цитированием
Старый 08.01.2012, 21:10   #135
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А какой смысл в таких гиганских отступах? 2-3 пробела не достаточно?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.01.2012, 21:18   #136
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
А какой смысл в таких гиганских отступах? 2-3 пробела не достаточно?
то табуляция вообще то, и одна, у меня в основном настроен таб как 4 пробела(что в студии что в прочих редакторах).
тут видимо таб==8 пробелов.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 08.01.2012, 22:34   #137
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А какой смысл в таких гиганских отступах? 2-3 пробела не достаточно?
Это сделано для того, чтобы лучше/четче было видно. И это при том, что у меня хорошее зрение
Вадим Мошев вне форума Ответить с цитированием
Старый 09.01.2012, 01:01   #138
Bustle
Interdicted
Участник клуба
 
Аватар для Bustle
 
Регистрация: 25.11.2010
Сообщений: 1,194
По умолчанию

Я тоже считаю не надобным такие большие пробелы. Лично я использую 4 или 2 пробела. В 90% случаев 4. Да и не удобно такие пробелы (лично для меня)
Love writing code and I am really passionate about it
Bustle вне форума Ответить с цитированием
Старый 11.01.2012, 00:55   #139
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
int open_port(const char *path, bool parity)
//процедура открытия и настройки COM-порта
//
//path     - путь порта
//parity   - включить бит четности(если включен то режим even)
//
//Возвращает -1 в случае ошибки открытия порта
{
	int result;
	//пытаемся открыть порт
	result = open(path, O_RDWR | O_NOCTTY | O_NDELAY);
	if (result == -1)
	{
		//fprintf(log,"Невозможно открыть порт %s.",path);
		return -1;
	}
	//на всякий случай повторим установку атрибута "без задержки"
	fcntl(result, F_SETFL, FNDELAY);
	//настройка порта
	termios mode;
	tcgetattr(result, &mode);
	//ставим скорость
	cfsetispeed(&mode, B9600);
	cfsetospeed(&mode, B9600);
	//установка размера данных
	mode.c_cflag &= ~CSIZE;
	mode.c_cflag |= CS8;
	//флаги важные для работы порта
	mode.c_cflag |= (CLOCAL | CREAD);
	//установка режима контроля четности(если надо)
	if(parity)
	{
		mode.c_cflag |= PARENB;
		mode.c_cflag &= ~PARODD;
	}
	else
		mode.c_cflag &= ~PARENB;
	//установка одиночного стоп бита
	mode.c_cflag &= ~CSTOPB;
	//установка бинарного режима передачи данных
	mode.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
	//установка контроля четности с отбрасывание бита четности
	//(если включен режим четности)
	if(parity)
	{
		mode.c_iflag |= (INPCK | ISTRIP);
	}
	//установка бинарного вывода
	mode.c_oflag &= ~OPOST;
	//сохраняем настройки
	tcsetattr(result, TCSANOW, &mode);

	return result;
}
вот
кусок рабочего кода, правда не проверен еще.
пишу комментарии чтоб после поллитра мог спокойно ориентироваться в коде.

PS: там символ табуляции, у меня по 4 пробела он стоит.
PPS: EditPadPro сворачивает функции от открывающей фигурной скобки, до закрывающей, итого шапка всегда видна(с комментом)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 11.01.2012 в 01:00.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.01.2012, 02:29   #140
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

А это мой. Пожалуйста не пугайтесь.

Код:
#include "stdafx.h"
//

// ----- Выстрелы ----------------
void Weapon_fire(void* Entity, RwV3d* pRwV3d, void* EntityTarget) {
DWORD A = ADDRESS_CWeapon_fire;

 __asm { 
   mov  ecx, EntityTarget
   push pRwV3d
   push Entity
   call A
  }

};

//--------- Показать текст
void __cdecl Show_TextBox(wchar_t* text, char b, int parmament){

DWORD A = ADDRESS_TextBox_Show;

 __asm { 
   push parmament
   push b
   push text
   call A
 }

};

//--------- загрузит запрошеные стимы
void LoadRequestedStreams(int a){
DWORD A = ADDRESS_loadRequestedStreams;

 __asm { 
   push a
   call A
 }

};

//--------- запросить стрим
void RequestStream(int ModelID, BYTE flag){
DWORD A = ADDRESS_RequestStream;

 __asm { 
   push flag
   push ModelID
   call A
 };

};

//--------- Освободить стрим ------------
void Streaming_releaseModel(int ModelID){
DWORD A = ADDRESS_Streaming_releaseModel;

 __asm { 
   push ModelID
   call A
 };

};

//--------- Текушии координаты игрока ----------
RwV3d* GetPosition_Player(int h) {
DWORD A = ADDRESS_Player_GetPosition;
RwV3d* Result;

 __asm { 
   push h
   call A
   mov Result, eax
 }
 return Result;
}



//--------------- получить игрока -------------------
void* GetPlayerPed() {
DWORD A = ADDRESS_GetPlayerPed;
void* Result;

 __asm { 
   call A
   mov Result, eax
 }
 return Result;
}

// ---------- дает оружие игроку --------------------
void GivePlayerWeapon(void *Ped,  int weaponId, int ammo, int a4){
DWORD A = ADDRESS_CPedGiveWeapon;

__asm {
  push    a4
  push    ammo
  push    weaponId
  mov     ecx, Ped
  call    A
 }

}

//--------------- Живой ли пед ------------------
bool Ped_IsAlive(void *Ped){
DWORD A = ADDRESS_Ped_IsAlive;
bool Result;

__asm {
	  mov  ecx, Ped
          call A 
	  mov  Result, al
 }

return Result;

};

void TimerUpdate(){

if ((GetKeyState(VK_F11) < 0)){
	wchar_t buffer[380];
	RwV3d* vRwV3d = GetPosition_Player(0);
	_swprintf(buffer, L" x = %f, y = %f, z = %f ", vRwV3d->x, vRwV3d->y, vRwV3d->z);
        Show_TextBox(buffer, 125 , 0);
}

 if  (GetKeyState(VK_F12) < 0) {
           GivePlayerWeapon(GetPlayerPed(), 22, 50, 1);
	   RequestStream(4, 5);
           LoadRequestedStreams(0);
	   Ped_SetModelIndex(GetPlayerPed(), 4);
     };

};

Последний раз редактировалось VintProg; 11.01.2012 в 02:32.
VintProg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Правила написания кода на Delphi Virtson Общие вопросы Delphi 17 06.08.2010 08:59
Правила разделов/главные правила Alex Cones О форуме и сайтах клуба 1 30.09.2009 17:49
Оформления текста tae1980 Microsoft Office Excel 6 26.03.2009 18:54
Стили оформления кода Altera Свободное общение 2 30.08.2008 17:23
Проблема оформления SunKnight Общие вопросы Delphi 3 25.02.2008 01:11