Переключение на Главную Страницу Страницы: 1 ... 3 4 [5] 6 7 8 ОтправитьПечать
Очень популярная тема (более 25 ответов) Повторная передача параметра по умолчанию (число прочтений - 50241 )
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Повторная передача параметра по умолчанию
Ответ #60 - 26. Июня 2006 :: 17:12
Печать  
fez писал(а) 26. Июня 2006 :: 17:10:
Не использовать кнопку "Проверка типов".


Да, интересные у вас тут представления о красивых способах...  Улыбка

Впрочем, мне их тут уже несколько посоветовали.  Улыбка
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Повторная передача параметра по умолчанию
Ответ #61 - 26. Июня 2006 :: 17:18
Печать  
sedmin писал(а) 26. Июня 2006 :: 17:12:
fez писал(а) 26. Июня 2006 :: 17:10:
Не использовать кнопку "Проверка типов".

Да, интересные у вас тут представления о красивых способах...  Улыбка

Я еще раз спрашиваю: Зачем нужно использовать проверку типов в насквозь нетипизированном языке?
  
Наверх
www  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Повторная передача параметра по умолчанию
Ответ #62 - 26. Июня 2006 :: 17:23
Печать  
kms писал(а) 26. Июня 2006 :: 17:12:
И весь оставшийся код не требует никаких проверок на пустое значение.
Т.е. я продолжаю работать со своим стандартным интерфейсом.


Считаю, что пример надуманный. Как параметр список не нужен. С тем же успехом можно завести переменную ЛокальныйСписок.

Цитата:
1. ты создаешь объект "КОП" 1 раз, дальше его используешь
2. никаких проверок Параметр.Пустой() после создания при хорошем дизайне не должно бы быть
3. при рекурсивном вызове у тебя объект уже не будет создаваться - он уже не пустой, а конкретный объект "КОП".


Прикол в том, что мне этот параметр здесь не нужен - я передаю его транзитом. А передать не могу, не последовав совету Федора.

Либо надо будет создать новый пустой объект именно для передачи в качестве параметра по умолчанию. Вот тогда то в Методе2 мне и придется проверять 2 раза: а не пустое ли это значение? а не пустой ли это объект КОП, созданный для передали параметра?

Лажа да и только. Уж лучше отключить проверку типов.
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Повторная передача параметра по умолчанию
Ответ #63 - 26. Июня 2006 :: 17:28
Печать  
sedmin писал(а) 26. Июня 2006 :: 17:23:
Лажа да и только. Уж лучше отключить проверку типов.

Именно.

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

Ты определись: тебе типизацию, или ехать?
  
Наверх
www  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Повторная передача параметра по умолчанию
Ответ #64 - 26. Июня 2006 :: 17:28
Печать  
fez писал(а) 26. Июня 2006 :: 17:18:
Я еще раз спрашиваю: Зачем нужно использовать проверку типов в насквозь нетипизированном языке?


Честно? Хотел использовать ее в подмножестве языка для дополнительного вылавливания ошибок.

Нахрена тогда ее вообще сделали? Типы только мешаются при описании параметров.

Да еще и сделали несовместимо с языком 1С по параметрам по умолчанию. Поэтому код нельзя использовать в бинарном режиме, и для использования в классах требуется переписка кода.

Сейчас у нас это основной сдерживающий момент для переноса кода в классы. Пару раз я ткнулся  - не пошло, надо переписывать. Теперь для классов используется только новый код.
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Повторная передача параметра по умолчанию
Ответ #65 - 26. Июня 2006 :: 17:37
Печать  
fez писал(а) 26. Июня 2006 :: 17:28:
Или у нас строгая типизация, но тогда нужно переколбашивать вообще всё.


Не надо. Единственное - сделать так, что параметр, который я принял, как тип "ПроизвольныйТип", можно было передать дальше как "ПроизвольныйТип".

Ну почему, если 1С++ пропущенный параметр для меня заменяет на <Пустое значение неопределенного типа>, то он не дает это значение дальше передать в эту же или в другую процедуру с пропущенным параметром?

Если я попросил СписокЗначений, а пришел NIL, то почему я не могу передать его в метод, который принимает (СписокЗначений либо NIL)?

Опять никто мне не объясняет, чем плох мой код... Все говорят "Зачем тебе это нужно? Иди в обход."
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Повторная передача параметра по умолчанию
Ответ #66 - 26. Июня 2006 :: 17:45
Печать  
Приведу реальный код, чтобы вам было легче меня критиковать.

Код
Выбрать все
Класс МойДокумент=МойДокумент.txt{
  void Новый(СписокЗначений спШапка="", ТаблицаЗначений тзТабличнаяЧасть="");
  void ЗаполнитьШапку(СписокЗначений спШапка="");
}

Процедура Новый(спШапка, тзТабличнаяЧасть)
  База().Новый();
  ПриСозданииДокументов(База("Документ")); //Совместимость со старым кодом - сразу все не переделаешь.
  Сам.ЗаполнитьШапку(спШапка);
КонецПроцедуры
 



Ну зачем мне, если у меня уже есть метод ЗаполнитьШапку(), как-то извращаться и что-то делать с спШапка? Ну не логично же это. Любые действия с спШапка тут будут лишними.

Следовательно, такое использование надо разрешить.
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Повторная передача параметра по умолчанию
Ответ #67 - 26. Июня 2006 :: 17:51
Печать  
sedmin писал(а) 26. Июня 2006 :: 17:37:
Если я попросил СписокЗначений, а пришел NIL, то почему я не могу передать его в метод, который принимает (СписокЗначений либо NIL)?

Потому что у тебя нет языковых средств сказать, что метод принимает два типа параметров.

Цитата:
Опять никто мне не объясняет, чем плох мой код.

У тебя хороший код. Просто это не 1С, и не 1С++. И именно это я и пытаюсь до тебя донести.
  
Наверх
www  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Повторная передача параметра по умолчанию
Ответ #68 - 26. Июня 2006 :: 17:55
Печать  
sedmin писал(а) 26. Июня 2006 :: 17:45:
Приведу реальный код, чтобы вам было легче меня критиковать.

Услышь меня.

СписокЗначений спШапка=""

Тут ты пытаешься усидеть на двух стульях сразу. Первый стул - это 1С-кое отсутствие строгой типизации. Второй стул - это 1С++-ная проверка типов. Ты определись для начала: ты хочешь использовать строгую типизацию или нет?
  
Наверх
www  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Повторная передача параметра по умолчанию
Ответ #69 - 26. Июня 2006 :: 17:56
Печать  
fez писал(а) 26. Июня 2006 :: 17:51:
Потому что у тебя нет языковых средств сказать, что метод принимает два типа параметров.

Как нет? Если написать Метод(СписокЗначений Список="");, то это означает, что мой код должен уметь обрабатывать два типа параметров. Я же не смогу без дополнительной проверки написать в коде

Для ъ=1 По Список.РазмерСписка() Цикл

От этого никуда не деться. Надо только сделать еще один шаг и разрешить передать этот параметр дальше. Услышь меня.  Улыбка
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Повторная передача параметра по умолчанию
Ответ #70 - 26. Июня 2006 :: 18:01
Печать  
Ну а если сделать прохождение проверки NIL в классе опциональным?

Единственно, это надо делать опять же модификатором типа.
Типа того:

Цитата:
void ЗаполнитьШапку(__ALLOW__NIL__ СписокЗначений спШапка="");

  

De quelle planète es-tu?
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Повторная передача параметра по умолчанию
Ответ #71 - 26. Июня 2006 :: 18:02
Печать  
sedmin писал(а) 26. Июня 2006 :: 17:45:
Ну зачем мне, если у меня уже есть метод ЗаполнитьШапку(), как-то извращаться и что-то делать с спШапка? Ну не логично же это. Любые действия с спШапка тут будут лишними.

Если ты в первую очередь не хочешь лишних действий со спШапка (в этом вопросе я тебя понимаю и поддерживаю), то у тебя есть уже готовый способ сделать это. Даже два.
1. Создать в глобальнике функцию глПустойСписок(), и в спШапка передавать его.
2. Не использовать проверку типов.

ЗАЧЕМ выдумывать что-то еще? Ради удовольствия написать =""?
  
Наверх
www  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Повторная передача параметра по умолчанию
Ответ #72 - 26. Июня 2006 :: 18:05
Печать  
sedmin писал(а) 26. Июня 2006 :: 17:56:
fez писал(а) 26. Июня 2006 :: 17:51:
Потому что у тебя нет языковых средств сказать, что метод принимает два типа параметров.

Как нет? Если написать Метод(СписокЗначений Список="");, то это означает, что мой код должен уметь обрабатывать два типа параметров.

Типизация или есть или ее нет. Два типа параметров - это отсутствие типизации.
  
Наверх
www  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Повторная передача параметра по умолчанию
Ответ #73 - 26. Июня 2006 :: 18:07
Печать  
fez писал(а) 26. Июня 2006 :: 18:05:
sedmin писал(а) 26. Июня 2006 :: 17:56:
fez писал(а) 26. Июня 2006 :: 17:51:
Потому что у тебя нет языковых средств сказать, что метод принимает два типа параметров.

Как нет? Если написать Метод(СписокЗначений Список="");, то это означает, что мой код должен уметь обрабатывать два типа параметров.

Типизация или есть или ее нет. Два типа параметров - это отсутствие типизации.

Федор, не совсем так.
Вот возьмем С/ C++.
Код
Выбрать все
void somefunc(int * pi)
{
}

int i = 100;
somefunc(&i); // корректно
somefunc(NULL); // тоже корректно
 

  

De quelle planète es-tu?
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Повторная передача параметра по умолчанию
Ответ #74 - 26. Июня 2006 :: 18:09
Печать  
Ну наконец-то. Хоть одного на свою сторону переманил.  Улыбка
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 3 4 [5] 6 7 8
ОтправитьПечать