¿Es incorrecto usar llaves para propósitos de alcance variable?

A veces uso llaves para aislar un bloque de código para evitar usar por error una variable más tarde. Por ejemplo, cuando pongo variosSqlCommandEn el mismo método, copio y pego bloques de código con frecuencia, terminando mezclando los nombres y ejecutando dos veces algunos comandos. Agregar llaves ayuda a evitar esta situación, porque usar un malSqlCommand en un lugar incorrecto dará lugar a un error. Aquí hay una ilustración:

Collection<string> existingCategories = new Collection<string>();

// Here a beginning of a block
{
    SqlCommand getCategories = new SqlCommand("select Title from Movie.Category where SourceId = @sourceId", sqlConnection, sqlTransaction);
    getCategories.Parameters.AddWithValue("@sourceId", sourceId);
    using (SqlDataReader categoriesReader = getCategories.ExecuteReader(System.Data.CommandBehavior.SingleResult))
    {
        while (categoriesReader.Read())
        {
            existingCategories.Add(categoriesReader["Title"].ToString());
        }
    }
}

if (!existingCategories.Contains(newCategory))
{
    SqlCommand addCategory = new SqlCommand("insert into Movie.Category (SourceId, Title) values (@sourceId, @title)", sqlConnection, sqlTransaction);

    // Now try to make a mistake and write/copy-paste getCategories instead of addCategory. It will not compile.
    addCategory.Parameters.AddWithValue("@sourceId", sourceId);
    addCategory.Parameters.AddWithValue("@title", newCategory);
    addCategory.ExecuteNonQuery();
}

Ahora, StyleCop muestra una advertencia cada vez que un bloque sigue una línea vacía. Por otro lado, no poner una línea vacía haría que el código sea mucho más difícil de entender.

// Something like:
Collection<string> existingCategories = new Collection<string>();
{
    // Code here
}

// can be understood as (is it easy to notice that semicolon is missing?):
Collection<string> existingCategories = new Collection<string>()
{
    // Code here
}

Entonces,

Esta ahíalgo mal al usar llaves para crear bloques de código solo para propósitos de alcance variable?

Si está bien, ¿cómo hacerlo más legible sin violar las reglas de StyleCop?

Respuestas a la pregunta(5)

Su respuesta a la pregunta