• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Property Vs Function?

  • Автор темы Автор темы fedotxxl
  • Дата начала Дата начала
мдя уж :)
ООП - большой маркетинговый ход в программировании вообще, если вас послушать и многих других, кто похоже думает...
ООП в Нотесе реальный инструмент!
sax_ol, если ты пытаешься указать на чужие недостатки в знаниях, то говори фактами! если человек в чем-то не прав, то сказав, что он не прав ты правее не станешь ;)
 
не увидел связи с "Exceptions и их обработка" и сабжем...
в кратце, нотес поддерживает обработку исключений в виде переходов на метку,
т.е. привычного try {} catch {} нету, есть on error errcode goto errhandler
но причем тут создание свойства? :) кроме того "про Nothing при неудачной инициализации объекта" тут вообще-то не связано, тот топик совсем старый, я его сегодня просто дополнил (если я конечно правильно понял о чем ты ;))
 
в общем, я опять таки на увидел связи, ну да ладно :)
сгенерить исключение можно, есть спец конструкция...
а не возвращать экземпляр конструктором, то почему же по самые уши?!
очень и очень удобная вещь, даже поудобнее свойств будет, как по мне :)
исключение надо обрабатывать спец. конструкцией, которая в лотусе не столь удобна как try ... catch, поэтому удобнее вернуть nothing
ничего кривого, к стати, я тут не вижу, исключение в конструкторе весьма распространенная вещь, особенно когда дело касается пакетной обработки документов, а если объект создается в любом случае, то придется вызывать какой-то доп.метод для проверки корректной инициализации экземпляра...
 
sax_ol, если ты пытаешься указать на чужие недостатки в знаниях, то говори фактами! если человек в чем-то не прав, то сказав, что он не прав ты правее не станешь :)

Абсолютно согласен. "RTFM" как ответ имеет нулевую ценность, а как аргумент - имеет конкретное название.
 
sax_ol, давай уже на "ты", а то с моей стороны получается не вежливо ;)

короче говоря, когда я вызываю конструктор, то я предполагаю, что:
1) объект создан удачно;
2) объект создан с ошибкой;
3) объект не создан по какой-либо причине;

генерация исключения в конструкторе влечет к возврату Nothing, т.е. если ошибка не обрабатывается самим же конструктором, то 2 и 3 случаи приводят к одному результату - 3-му случаю!
чес гря, я уже давно с Delphi не работал и не помню как там было, но специфика LS такова, что наиболее удобными ситуациями являются варианты 1 и 3!
Кроме того, конструкция

Код:
dim a as object
set a = new object()
if not(a is nothing) then
' do something
end if
удобнее и проще чем

Код:
dim a as object
set a = new object()
if a.successfullyCreated() then
' do something
end if

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

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

кроме того, я могу ошибаться, но ООП не предписывает, что объект не может быть создан, ООП определяет, что все может быть описано с помощью объектов, а также устанавливает правила поведения родительских и дочерних объектов, и дает рекомендации к реализации классов (те же методы доступа и сокрытия полей), хотя не обязует делать именно так!
если у меня есть поле, которое в соотв с требованиями должно изменяться прямо, то тогда какой смысл навязывать методы доступа?
это лишь приведет к увеличению затрат времени написания, и отработки кода...
кроме того, если бы объект всегда должен был создаваться, тогда не имеет смысла куча конструкций во множестве языков программирования, которые позволяют определить содержит ли переменная экземпляр предписанного ей класса!

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

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

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

я, например, если потребуется использую и генерацию исключений, и вызов методов проверки удачного создания объектов и другое, все зависит от того, что нам нужно получить...
 
Харе флудить. Может мне модератором устроиться?)
 
Какойто нонсенс. Чтото из - "вроде да а вроде нет" ... бредова звучит. Еще раз, объект либо создан либо нет, другого я даже и представить не могу. Пол ( треть, просто кусок) объекта не бывает.
Ой, как ты себя ограничиваешь :) еще как может быть, твой же пример с файлами возьмем, вот нет возможности создать файл на диске - т.о. объект создан, но не инициализирован! вот тебе и треть объекта ;)

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

Вы должны знать интерфейс (контракт), а иначе собственно как работать то? Вот , К ПРИМЕРУ, у вас есть объект документа (лотусовского), вы знаете как с ним работать или нет? так и везде. И где это я утверждал обратное? ткните носом
вот из этого я предположил, что инструкцией ты не пользуешься ;)
? Конечно вы можете возразить, что мол надо читать инструкцию и т.д., это все понятно, но это ничего не меняет.

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

вот ... файлы привел как пример, читайте внимательно.
всего лишь подхватил как тот же пример



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

Реальные примеры проверки на, уже упомянутый, нул, после создания будут, оссобенно с применением той "кучи конструкций во множестве языков программирования"?
Я чаще встречаю (и пишу естественно) типа такое:
> z = new Z();
> try
> catch(...)
Да никто не говорит что по другому в принципе нельзя.
вот как раз ты и утверждаешь, что именно так и надо делать, причем не беря во внимание даже моих слов о том, что специфика самого LotusScript убеждает нас использовать "мою" конструкцию ) в лотусе вообще нету try catch, конечно можно создать его подобие, но через зад...

Вот вот - именно вы. sad.gif И это оч жаль.
гы-гы :) а тут речь не шла о мне именно, я говорил о программерах, да и остальных пользователях... редко когда пользователи читают инструкцию перед тем как начать использовать устройство...
к сведению, я редко когда вообще закрываю справку :) а на форуме чаще отвечаю чем спрашиваю ;)

Харе флудить. Может мне модератором устроиться?)
думаешь за это доплачивают?.. ))
 
Если я ему скажу а он не сделал, он уже не программист, по крайней мере со мной уже не работает
извени, но это слишком высокомерная фраза, кроме того, сомневаюсь, что ты сам во всех случаях занимаешься чисткой мусора :unsure:
ну, вот не верю :blink: (не в обиду, просто время такое, не на асме пишем)

Да вот и нет, я то взял во внимание, и сказал, что если нельзя или "через зад", то делайте доп свойства и далее все как обычно. Создал объект, проинициализировал, посмотрел все ли ок, поработал, опять посмотрел все ли ок, и в конце удалил. Гдеж тут не так как надо?
А вот удалять в конструкторе - это, еще раз не побоюсь этого слова - "на кол" smile.gif
ну, что-то мне кажется, что ты меня все-равно не полностью понимаешь :(
на самом деле-то это и не через зад, просто это степени использования возможностей языка, конструкции try catch нет, поэтому приходится обходиться if и возвращать nothing
нет смысла делать свойства - всего-лишь доп. нагрузка...

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

в остальном не хочу отвечать :unsure: утомило
 
sax_ol +1

Dim a As object ~ (sometimes) Set a = New object() - не есть гут!

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

While (a Is Nothing)
Set a = New object()
Wend
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab