Добавление отступа SQL-оператора хорошая [закрытая] практика

Вам нужно найти GameObject, который содержит компонент скрипта, на который вы планируете получить ссылку. Убедитесь, что GameObject уже находится в сцене, или Find вернет null.

 GameObject g = GameObject.Find("GameObject Name");

Затем вы можете схватить скрипт:

 BombDrop bScript = g.GetComponent();

Затем вы можете доступ к переменным и функциям скрипта.

 bScript.foo();

Я только что понял, что на тот же день я ответил на очень похожий вопрос: Не знаю, как получить здоровье врага


Я немного расскажу о вашем вопросе, так как я уже ответил на это.

Что ваш код делает, так это: «Посмотрите в мой GameObject для BombDropScript, большую часть времени сценарий не будет прикреплен к одному и тому же GameObject.

Также используйте setter и getter для maxBombs.

public class BombDrop : MonoBehaviour
{
    public void setMaxBombs(int amount)
    {
        maxBombs += amount;
    }

    public int getMaxBoms()
    {
        return maxBombs;
    }
}

68
задан Mihai Limbășan 15 November 2008 в 08:30
поделиться

20 ответов

SELECT column1
     , column2
FROM table1
WHERE column3 IN
(
    SELECT TOP(1) column4
    FROM table2
    INNER JOIN table3
    ON table2.column1 = table3.column1
)

мне нравится иметь весь "", в передней стороне , этот способ, которым я никогда не ищу их когда ошибка в строке X от редактора SQL.

<час>

Это - пример для тех, кто не использует этот тип записи SQL-оператора. Оба содержат ошибку недостающей запятой.

SELECT sdcolumn123
 , dscolumn234
 , sdcolumn343
 , ffcolumn434
 , sdcolumn543
 , bvcolumn645
  vccolumn754
 , cccolumn834
 , vvcolumn954
 , cvcolumn104
FROM table1
WHERE column3 IN
(
    ...
)

SELECT sdcolumn123, dscolumn234, asdcolumn345, dscolumn456, ascolumn554, gfcolumn645 sdcolumn754, fdcolumn845, sdcolumn954, fdcolumn1054
FROM table1
WHERE column3 IN
(
    ...
)

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

43
ответ дан Patrick Desjardins 7 November 2019 в 10:06
поделиться

Это - вопрос вкуса.

Это - мое предпочтение.

SELECT 
  column1
 ,column2
FROM
  table1
WHERE column3 IN (
                 SELECT TOP(1) column4
                 FROM 
                   table2
                   INNER JOIN table3
                 ON table2.column1 = table3.column1
                 )
0
ответ дан JosephStyons 7 November 2019 в 10:06
поделиться

Я не знаю, существует ли стандарт, но мне нравится делать это этот путь;

SELECT column1, column2
  FROM table1
WHERE column3 IN
(
    SELECT TOP(1) column4
      FROM table2
    INNER JOIN table3
      ON table2.column1 = table3.column1
)

, потому что я могу считать и проанализировать SQL лучше.

1
ответ дан A. Rex 7 November 2019 в 10:06
поделиться

То, что я обычно делаю,

print("SELECT column1, column2
       FROM table1
       WHERE column3 IN (SELECT TOP(1) column4
                         FROM table2 INNER JOIN 
                              table3 ON table2.column1 = table3.column1)");
0
ответ дан 7 November 2019 в 10:06
поделиться

Ну, конечно, это зависит от запроса.

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

1
ответ дан Joel Coehoorn 7 November 2019 в 10:06
поделиться

Да, это довольно субъективно... Но вот мои 2 цента:

SELECT
   Column1,
   Column2
FROM Table1
WHERE 
   Column3 IN (
      SELECT Column4
      FROM Table2
      JOIN Table3 ON
         Table2.Column1 = Table3.Column1
   )

, Но, действительно, я, вероятно, переписал бы его без В:

SELECT
   Column1,
   Column2
FROM Table1
JOIN Table2 ON
   Table1.Column3 = Table2.Column4
JOIN Table3 ON
   Table2.Column1 = Table3.Column1

В основном, мои правила:

  • Используют для своей выгоды Ключевые слова
  • , Столбцы идут на отдельные строки, но ВЫБИРАЮТ модификаторы (ИЗБРАННЫЙ TOP 100, ВЫБЕРИТЕ ОТЛИЧНЫЙ, и т.д.) или отдельные столбцы (ВЫБЕРИТЕ 1, ВЫБЕРИТЕ идентификатор, ВЫБЕРИТЕ *, и т.д.) идут на ту же строку
  • Условия объединения, расположенные с отступом под СОЕДИНЕНИЕМ Использования пункта
  • СОЕДИНЕНИЯ для ВНУТРЕННЕГО ОБЪЕДИНЕНИЯ (так как это - общее), и полностью определите других (ОСТАВЛЕННЫЙ ВНЕШНЕЕ ОБЪЕДИНЕНИЕ, ПОЛНОЕ ВНЕШНЕЕ ОБЪЕДИНЕНИЕ, и т.д.)
  • Открытый parens на той же строке, закройте paren на отдельной строке. Если у Вас есть псевдоним, псевдоним идет с завершением paren.
2
ответ дан Tom H 7 November 2019 в 10:06
поделиться

Это - мое нормальное предпочтение:

....SELECT column1
........,column2
....FROM table1
....WHERE column3 IN (
........SELECT TOP(1) column4
........FROM table2
........INNER JOIN table3
............ON table2.column1 = table3.column1
....)

, Хотя stackoverflow портит форматирование с дополнительным ведущим пространством, таким образом, я вставил несколько периодов, таким образом, Вы видите, что фактическое форматирует...

2
ответ дан Cade Roux 7 November 2019 в 10:06
поделиться

Я только что провел его через свой SQL prettifier, и это вышло как это....

SELECT column1, column2
FROM table1
WHERE column3 IN
(
SELECT TOP(1) column4
    FROM table2
            INNER JOIN table3
            ON table2.column1 = table3.column1
)

http://extras.sqlservercentral.com/prettifier/prettifier.aspx

..... Но я не разработал способ получить цвета в StackOverflow.

2
ответ дан Patrick Desjardins 7 November 2019 в 10:06
поделиться

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

SELECT column1, column2
FROM   table1
WHERE  column3 IN(SELECT     TOP(1) column4
                  FROM       table2
                  INNER JOIN table3 ON
                             table2.column1 = table3.column1
                 )
4
ответ дан Bullines 7 November 2019 в 10:06
поделиться

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

SELECT  column1, 
        column2
FROM    table1
WHERE   column3 IN
(
        SELECT TOP(1) column4
        FROM    table2
        INNER JOIN table3
        ON      table2.column1  = table3.column1
)
5
ответ дан Jack Ryan 7 November 2019 в 10:06
поделиться

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

Редактирование: Я полагаю, что это является местоположением 2014 года средства форматирования SQL.

7
ответ дан DOK 7 November 2019 в 10:06
поделиться

Мне нравится форма jalbert выстраивания в линию ключевых слов с правой стороны от них. Я также добавил бы, что мне нравится ANDs, и ORs слева (некоторые люди помещают их справа.), Кроме того, мне нравится выстраиваться в линию, мой равняется знакам, если это возможно.


SELECT column1, 
       column2  
  FROM table1, table2 
 WHERE table1.column1 = table2.column4 
   AND table1.col5    = "hi" 
    OR table2.myfield = 678 
16
ответ дан Slapout 7 November 2019 в 10:06
поделиться

Я записал стандарт кода для нашего магазина, который смещается в экстремальном значении к удобочитаемости / "discoverability" (последнее существо, прежде всего, полезное в операторах вставлять-выбора):

SELECT 
    column1, 
    column2
FROM 
    table1
WHERE 
    column3 IN
    (
        SELECT TOP(1) 
            column4
        FROM 
            table2
            INNER JOIN table3 ON table2.column1 = table3.column1
    )

На более сложных запросах становится более очевидно, как это полезно:

SELECT
    Column1,
    Column2,
    Function1
    (
        Column1,
        Column2
    ) as Function1,
    CASE
    WHEN Column1 = 1 THEN
        a
    ELSE
        B
    END as Case1       
FROM
    Table1 t1
    INNER JOIN Table2 t2 ON t1.column12 = t2.column21
WHERE
    (
        FilterClause1
        AND FilterClause2
    )
    OR
    (
        FilterClause3
        AND FilterClause4
    )

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

7
ответ дан Mike Burton 7 November 2019 в 10:06
поделиться

Мне нравится иметь "реки" пробела в коде. Это делает немного легче просканировать.

SELECT column1,
       column2
  FROM table1
 WHERE column3 IN (SELECT column4
                     FROM table2
                     JOIN table3
                       ON table2.column1 = table3.column1);
19
ответ дан jalbert 7 November 2019 в 10:06
поделиться

Не уверенный существует принятая практика, но здесь теперь, как я сделал бы это:

SELECT 
    column1, 
    column2 
FROM 
    table1 
WHERE 
    column3 IN 
    ( 
     SELECT TOP(1) 
         column4 
     FROM 
         table2 
         INNER JOIN 
         table3 
             ON table2.column1 = table3.column1 
    )
20
ответ дан Codewerks 7 November 2019 в 10:06
поделиться

Форматирование SQL является областью, где существует большое различие и разногласие... Но fwiw, мне нравится фокусироваться на удобочитаемости и думать, что независимо от того, что Вы делаете, последовательно соответствуя любым правилам, которые уменьшают удобочитаемость, когда старое клише идет, "глупая непротиворечивость" ("Глупая непротиворечивость эльф для простых умов")

Так, вместо того, чтобы назвать их правилами, вот некоторые инструкции. Для каждого Главного пункта в SQL-операторе (Выбор, Вставьте, Удалите, От, Где, Наличие, Группа, Порядок... Я могу отсутствовать, некоторые) должно ЛЕГКО идентифицироваться. Таким образом, я обычно располагаю их с отступом на высшем уровне, все даже друг с другом. Тогда в рамках каждого пункта, я располагаю следующую логическую sub структуру с отступом равномерно... и так далее.. Но я не стесняюсь к (и часто делайте), измените шаблон, если бы в каком-либо отдельном случае это было бы более читаемо, чтобы сделать так... Сложные Операторы выбора являются хорошим примером. Поскольку что-либо, что требует горизонтальной прокрутки, уменьшает удобочитаемость чрезвычайно, я часто пишу, что комплекс (вложил) Case-выражения на нескольких строках. Когда я делаю, я пытаюсь сохранить начало такого выступа оператора на основе, он - логическое место в SQL-операторе и остальная часть отступа строк оператора несколько символов furthur...

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

, я также использовал бы псевдонимы Таблицы для сокращения суммы текста, который должен просканировать глаз, чтобы к grok структура запроса, пока псевдонимы не создают беспорядок. В запросе меньше чем с 3 или 4 таблицами Односимвольные псевдонимы прекрасны, я часто использую первую букву таблицы, если все там представляют в виде таблицы, запускаются с различной буквы... снова, независимо от того, что большинство способствует удобочитаемости. Наконец, если Ваша поддержка БД это, многие ключевые слова являются дополнительными, (как "Внутренний", "Внешнее", "Как" для псевдонимов, и т.д.) "В" (от Вставки В) является дополнительным на SQL-сервере - но не на Oracle) Так быть осторожным относительно использования этого, если Ваш код должен быть независимой платформой...

Ваш пример, я записал бы как:

Select column1, column2
From table1 T1
Where column3 In (Select Top(1) column4
                  From table2 T2
                     Join table3 T3
                         On T2.column1 = T3.column1)

Или

Select column1, column2
From table1 T1
Where column3 In 
     (Select Top(1) column4
      From table2 T2
         Join table3 T3
            On T2.column1 = T3.column1)

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

Select column1, column2, Col3, Col4, column5,
    column6, Column7, isNull(Column8, 'FedEx') Shipper,
    Case Upper(Column9) 
       When 'EAST'  Then 'JFK'
       When 'SOUTH' Then 'ATL'
       When 'WEST'  Then 'LAX'
       When 'NORTH' Then 'CHI' End HubPoint
From table1 T1
Where column3 In 
     (Select Top(1) column4
      From table2 T2
         Join table3 T3
            On T2.column1 = T3.column1)

Формат, код любым способом делает его самым читаемым...

6
ответ дан Charles Bretana 7 November 2019 в 10:06
поделиться
SELECT column1, column2
FROM table
WHERE column3 IN (
    SELECT TOP(1) column4
    FROM table2
    INNER JOIN table3 ON table2.column1 = table3.column1
)

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

25
ответ дан Bill the Lizard 7 November 2019 в 10:06
поделиться

Я отформатировал бы как это:

SELECT
    column1, 
    column2
FROM 
    table1
WHERE 
    column3 IN (SELECT TOP(1) 
                    column4 
                FROM 
                    table2 
                    INNER JOIN table3 ON table2.column1 = table3.column1)

или как это:

SELECT
    column1, 
    column2
FROM 
    table1
WHERE 
    column3 IN (SELECT TOP(1) column4 
                FROM table2 
                INNER JOIN table3 ON table2.column1 = table3.column1)
3
ответ дан Mitch Wheat 7 November 2019 в 10:06
поделиться

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

SELECT
  column1,
  column2
FROM
  table1
WHERE
  column3 IN ( 
    SELECT TOP(1)
      column4
    FROM
      table2
      INNER JOIN table3 ON table2.column1 = table3.column1
  )


SELECT
  column1,
  column2
FROM
  table1
WHERE
  column3 IN ( 
    SELECT TOP(1)
      column4
    FROM
      table2
      INNER JOIN table3
        ON table2.column1 = table3.column1 -- for long ones
  )
10
ответ дан LeppyR64 7 November 2019 в 10:06
поделиться

Пример отступа очень-очень-очень сложного SQL:

SELECT 
    produtos_cesta.cod_produtos_cesta, 
    produtos.nome_pequeno,
    tab_contagem.cont,
    produtos_cesta.sku, 
    produtos_kits.sku_r AS sku_kit, 
    sku_final = CASE
        WHEN produtos_kits.sku_r IS NOT NULL THEN produtos_kits.sku_r
        ELSE produtos_cesta.sku
    END,
    estoque = CASE
        WHEN produtos2.estoque IS NOT NULL THEN produtos2.estoque
        ELSE produtos.estoque
    END,
    produtos_cesta.unidades as unidades1, 
    unidades_x_quantidade = CASE
        WHEN produtos.cod_produtos_kits_tipo = 1 THEN CAST(produtos_cesta.quantidade * (produtos_cesta.unidades / tab_contagem.cont) * produtos_kits.quantidade AS int)
        ELSE CAST(produtos_cesta.quantidade * produtos_cesta.unidades AS int)
    END,
    unidades = CASE
        WHEN produtos.cod_produtos_kits_tipo = 1 THEN produtos_cesta.unidades / tab_contagem.cont * produtos_kits.quantidade
        ELSE produtos_cesta.unidades
    END,
    unidades_parent = produtos_cesta.unidades,
    produtos_cesta.quantidade,
    produtos.controla_estoque, 
    produtos.status
FROM 
    produtos_cesta 
INNER JOIN produtos 
    ON (produtos_cesta.sku = produtos.sku) 
INNER JOIN produtos_pacotes 
    ON (produtos_cesta.sku = produtos_pacotes.sku) 
INNER JOIN (
    SELECT 
        produtos_cesta.cod_produtos_cesta,
        cont = SUM(
            CASE
                WHEN produtos_kits.quantidade IS NOT NULL THEN produtos_kits.quantidade
                ELSE 1
            END
        )
    FROM 
        produtos_cesta 
    LEFT JOIN produtos_kits 
        ON (produtos_cesta.sku = produtos_kits.sku) 
    LEFT JOIN produtos 
        ON (produtos_cesta.sku = produtos.sku) 
    WHERE 
        shopper_id = '" + mscsShopperId + @"' 
    GROUP BY 
        produtos_cesta.cod_produtos_cesta, 
        produtos_cesta.sku, 
        produtos_cesta.unidades 
) 
AS tab_contagem
    ON (produtos_cesta.cod_produtos_cesta = tab_contagem.cod_produtos_cesta)
LEFT JOIN produtos_kits 
    ON (produtos.sku = produtos_kits.sku) 
LEFT JOIN produtos as produtos2
    ON (produtos_kits.sku_r = produtos2.sku) 
WHERE 
    shopper_id = '" + mscsShopperId + @"' 
GROUP BY 
    produtos_cesta.cod_produtos_cesta, 
    tab_contagem.cont,
    produtos_cesta.sku, 
    produtos_kits.sku_r, 
    produtos.cod_produtos_kits_tipo, 
    produtos2.estoque,
    produtos.controla_estoque, 
    produtos.estoque, 
    produtos.status, 
    produtos.nome_pequeno, 
    produtos_cesta.unidades, 
    produtos_cesta.quantidade,
    produtos_kits.quantidade
ORDER BY 
    produtos_cesta.sku, 
    produtos_cesta.unidades DESC
5
ответ дан 24 November 2019 в 13:40
поделиться
Другие вопросы по тегам:

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