V případě, že složky v roztoku odpovídaly názvů?

hlasů
98

V případě, že složky v roztoku odpovídaly názvů?

V jednom z mých projektů týmů, máme knihovny třídy, která má mnoho dílčích složek v projektu.

Název projektu a odkazovaných MyCompany.Project.Section.

V rámci tohoto projektu, existuje několik složek, které odpovídají sekci namespace:

  • Složka Vehiclesmá tříd ve MyCompany.Project.Section.Vehiclesjmenném prostoru
  • Složka Clothingmá tříd ve MyCompany.Project.Section.Clothingjmenném prostoru
  • atd.

Uvnitř tohoto stejný projekt, je další nepoctiví složka

  • Složka BusinessObjectsmá tříd ve MyCompany.Project.Sectionjmenném prostoru

Existuje několik případů, jako je tento, kdy jsou složky vytvořené pro „organizační pohodlí“.

Moje otázka zní: Jaká je standardní? Ve třídě knihovny do složky obvykle odpovídat struktuře jmenného prostoru, nebo je to směska?

Položena 07/08/2008 v 13:53
zdroj uživatelem
V jiných jazycích...                            


7 odpovědí

hlasů
59

Všimněte si také, že pokud budete používat vestavěné šablony pro přidání třídy do složky, bude ve výchozím nastavení se dát do jmenného prostoru, který odráží hierarchii složek.

Třídy bude snazší najít a to samo o sobě by mělo stačit dobré důvody.

Pravidla se řídíme, jsou:

  • Název projektu / sestava je stejná jako kořenová názvů, s výjimkou DLL konec
  • Jedinou výjimkou z výše uvedeného pravidla je projekt s .Core končit se .Core se odtáhne
  • Složky se rovná jmenné prostory
  • Jeden typ na soubor (třídy, struct, enum, delegáta, atd) usnadňuje najít ten správný soubor
Odpovězeno 07/08/2008 v 13:58
zdroj uživatelem

hlasů
25

Myslím, že standard, v .NET, je pokusit se to, když je to možné, ale nevytvářet zbytečně hluboké struktury, jen aby k ní přistoupí jako tvrdé pravidlo. Žádný z mých projektů následovat názvů == pravidlo struktura 100% času, někdy je to jen čistší / lepší, aby se vymanily z těchto pravidel.

V Javě, že nemáte na výběr. Já bych zavolat, že klasický případ toho, co funguje teoreticky vs to, co funguje v praxi.

Odpovězeno 07/08/2008 v 13:58
zdroj uživatelem

hlasů
24

Ne.

Snažil jsem se obě metody na malých i velkých projektů, a to jak s single (me) a tým vývojářů.

Zjistil jsem, nejjednodušší a nejproduktivnější cesta měla mít jeden jmenný prostor na projekt a všechny třídy jít do tohoto jmenného prostoru. Pak jste zatím umístit soubory třídy do jakéhokoliv projektu složky, které chcete. Neexistuje žádný probírat přidávání příkazy pomocí v horní části souborů po celou dobu, jak tam je jen jeden namespace.

Je důležité uspořádat zdrojové soubory do složky a podle mého názoru, který je všechny složky by měly být použity pro. Požadavek, aby tyto složky map i jmenných prostorů je zbytečné, vytváří více práce, a našel jsem ve skutečnosti škodlivé pro organizaci, protože přidaná zátěž povzbuzuje dezorganizaci.

Vezměte toto varování FxCop například:

CA1020: Vyhněte se jmenné prostory s několika typy
způsobují: Jiný než globální názvů názvů obsahuje méně než pět typů https://msdn.microsoft.com/en-gb/library/ms182130.aspx

Toto varování vybízí dumping nových souborů do generického složky Project.General, nebo dokonce v kořenovém adresáři projektu, dokud nebudete mít čtyři podobné třídy ospravedlnit vytvoření nové složky. Bude to někdy stalo?

Hledání souborů

Akceptovanou odpověď říká: „Třídy bude snazší najít a to samo o sobě by mělo být důvody dost dobrý.“

Mám podezření, že odpověď odkazuje k mít více oborů názvů v projektu, které nejsou na stránkách strukturu složek, spíše než to, co navrhuji, což je projekt s jediným názvů.

V každém případě, když nelze určit složku, ve které je soubor třídy je z oboru názvů, najdete ji pomocí Přejít na definici nebo vyhledávací pole Solution Explorer v Visual Studio. Také to není opravdu velký problém podle mého názoru. Nemyslím spotřebovat dokonce 0,1% svého času vývoje na problém hledání souborů ospravedlnit optimalizací.

jméno střety

Sure vytvořit více oborů názvů umožňuje projekt mít dvě třídy se stejným názvem. Ale je to opravdu dobrá věc? Je to možná jednodušší zakázat to od být možné? Dovolovat dvě třídy se stejným názvem vytvoří složitější situaci, kdy 90% času věci fungují určitým způsobem a najednou zjistíte, že jste zvláštní případ. Řekněme, že máte dvě Obdélník tříd definovaných v samostatných jmenných prostorech:

  • třída Project1.Image.Rectangle
  • třída Project1.Window.Rectangle

Je možné zasáhnout problém, který zdrojový soubor má obsahovat obě obory názvů. Teď budete muset vypsat úplný jmenný všude v tomto souboru:

var rectangle = new Project1.Window.Rectangle();

Nebo nepořádek kolem hustými pomocí příkazu:

using Rectangle = Project1.Window.Rectangle;

S jedinou názvů v projektu jste nuceni vymyslet jiný, a já bych argumentovat výstižnější, jména, jako je tento:

  • třída Project1.ImageRectangle
  • třída Project1.WindowRectangle

A využití je všude stejná, nemusíte řešit zvláštní případ, kdy soubor používá oba typy.

pomocí příkazů

using Project1.General;  
using Project1.Image;  
using Project1.Window;  
using Project1.Window.Controls;  
using Project1.Shapes;  
using Project1.Input;  
using Project1.Data;  

proti

using Project1;

Snadnost nemají přidat jmenné prostory po celou dobu při psaní kódu. To není čas to bere vážně, je to zlom v toku má na to a jen doplňování souborů se spoustou pomocí příkazů - k čemu? Stojí to za to?

Změna struktury složek projektu

Jsou-li složky mapovány do jmenných prostorů pak cesta ke složce projekt je skutečně pevně do každého zdrojového souboru. To znamená, že jakýkoliv přejmenování nebo přesunutí souboru nebo složky v projektu vyžaduje skutečný obsah souboru změnit. Obě prohlášení názvů souborů v této složce a pomocí příkazů v spoustu dalších souborů, které odkazují na výuku v této složce. Zatímco samotné změny jsou triviální s nástroji, to obvykle vede k velké commit se skládá z mnoha souborů, jejichž výuka se ani změnit.

S jedinou názvů v projektu můžete změnit projektovou strukturu složek však budete chtít, aniž by některý zdrojové soubory samy o sobě byly modifikovány.

Visual Studio automaticky mapuje názvů nového souboru do složky projektu je to vytvořené v

Nešťastné, ale zjistil jsem, hádka korigovat jmenný prostor je menší než nepříjemného zacházení s nimi. Také jsem se dostal do zvyku kopie vkládaným existující soubor spíše než pomocí add> Nový.

Intellisense a Object Browser

Největším přínosem je podle mého názoru použití více jmenných prostorů ve velkých projektech se má navíc organizaci při prohlížení tříd v každém nástroji, který zobrazuje tříd v oboru názvů hierarchie. Dokonce i dokumentace. Zřejmě má jen jeden obor názvů výsledků projektu ve všech třídách jsou zobrazeny v jediném seznamu spíše než rozděleny do kategorií. Nicméně osobně jsem nikdy nebyl poražen nebo zpožděn z důvodu nedostatku to tak nepovažuji to dost velká výhoda ospravedlnit více jmenných prostorů.

Ačkoli kdybych psal velkou knihovnu public class pak jsem bude pravděpodobně používat více oborů názvů v projektu tak, aby sestava vypadala čistý v nářadí a dokumentaci.

Odpovězeno 25/03/2015 v 12:22
zdroj uživatelem

hlasů
21

@lassevk: Souhlasím s těmito pravidly, a ještě jeden přidat.

Když jsem vnořené třídy, stále jsem rozdělil ven, jeden na souboru. Takhle:

// ----- Foo.cs
partial class Foo
{
    // Foo implementation here
}

a

// ----- Foo.Bar.cs
partial class Foo
{
    class Bar
    {
        // Foo.Bar implementation here
    }
}
Odpovězeno 11/09/2008 v 04:45
zdroj uživatelem

hlasů
4

Řekl bych, že ano.

Za prvé, bude snadnější najít skutečné soubory kódu pomocí následujícího dolů jmenných prostorů (dejme tomu, když někdo e-maily, které nahá výjimku zásobník volání). Necháte-li vaše složky jít ven synchronizace s jmenných prostorů, hledání souborů ve velkých codebases stává stále únavné.

Za druhé, VS bude generovat nové třídy vytvořené ve složkách se stejným oboru názvů nadřazené složky struktury. Pokud se rozhodnete plavat proti tomu, bude to jen další instalatérské práce dělat každý den při přidávání nových souborů.

Samozřejmě, že to samozřejmé, že jeden by měl být opatrný o tom, jak hluboko x je složka hierarchie / namespace jde.

Odpovězeno 07/08/2008 v 13:57
zdroj uživatelem

hlasů
3

Ano, měli, vede pouze k nejasnostem jinak.

Odpovězeno 07/08/2008 v 13:55
zdroj uživatelem

hlasů
0

Jaká je standardní?

Neexistuje žádný oficiální standard, ale konvenčně složka-to-namespace mapování vzor je nejpoužívanější.

Ve třídě knihovny do složky obvykle odpovídat struktuře jmenného prostoru, nebo je to směska?

Ano, ve většině knihoven tříd odpovídají složky oboru názvů pro organizační lehkostí.

Odpovězeno 15/07/2018 v 07:00
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more