Почему помещенные частные поля и методы наверху класса?

В целях отладки вы можете заменить переменную таблицы (@tableName) глобальной временной таблицей (## tableName).

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

Вы хотите закомментировать определение табличной переменной, а затем добавить оператор CREATE TABLE ##.... После этого найдите & amp; Замена должна подготовить ваш сценарий (и положить его обратно, когда вы закончите).

Вот документация по Временным таблицам .

29
задан JimDaniel 22 April 2009 в 18:23
поделиться

10 ответов

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

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

22
ответ дан 28 November 2019 в 01:32
поделиться

It probably comes from the days of C, when all variables had to be defined at the top, as part of the initialisation. Also, the default access specifier is private, so it can save you a superfluous private: later on in your class definition.

11
ответ дан 28 November 2019 в 01:32
поделиться

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

9
ответ дан 28 November 2019 в 01:32
поделиться

Я согласен, что он, вероятно, исходит из C, но он также выполняет практическую функцию.

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

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

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

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

И, как всегда, нарушение согласованности никогда не является хорошей идеей, если нет веских причин для этого.

4
ответ дан 28 November 2019 в 01:32
поделиться

Two reasons.

If they are all together at the top, they are easy to find, and easy to inspect when creating a new thing to see what naming conventions are at work and what names are and are not available.

In the C language, and in javascript, all references in code must be declared and/or defined above where they are referenced, because everything referenced must be already known. (Yes, I know, javascript only sorta.)

3
ответ дан 28 November 2019 в 01:32
поделиться

В ООП- есть две вещи - данные и поведение

Закрытые члены представляют данные, а открытые методы представляют поведение.

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

3
ответ дан 28 November 2019 в 01:32
поделиться

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

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

2
ответ дан 28 November 2019 в 01:32
поделиться

I thought the defacto standard is public methods first! atleast that is the way I write my classes. It helps me chosing the datastructures for my methods.

1
ответ дан 28 November 2019 в 01:32
поделиться

I guess it's habit. You have to declare functions and variables before you can use them so this is consistent.

On the other hand, it's the stuff you don't really want other people to be reading so it belongs at the bottom.

0
ответ дан 28 November 2019 в 01:32
поделиться

Не секрет, что они там. Вы боитесь, что кто-то узнает о внутренней работе? Если у них есть источник, они могут узнать все, что им нужно знать о вашем классе.

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

-2
ответ дан 28 November 2019 в 01:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: