PoGo-Devs / PoGo

UWP Client for Pokemon Go
https://pogo-windows.com/
MIT License
38 stars 9 forks source link

(Discussion) New PoGo file structure proposals #5

Closed jakubsuchybio closed 8 years ago

jakubsuchybio commented 8 years ago

Ok, so I made 3 proposals for structuring new PoGo Repo(s).

Main goals that STApps want to accomplish with this:

I am adding them as separate posts, so everyone can upvote/downvote them. But please when you do, explain in the comment why you think that. Thanks!

Also in second and third I didn't include other dirs as in first one, but they will definitely be there.

jakubsuchybio commented 8 years ago
PoGo (repo)
    .github (folder for .md templates for github)
    ... gitignore and other git stuff
    packages
        ... all nugets
    modules
        PoGo-API (submodule)
    PoGo
        PoGo.csproj (reference to ../modules/PoGo-API/.../PoGo-API.dll)
        ... sources
    PoGo.Tests
        PoGo.Tests.csproj
        ... tests
    PoGo.sln

PoGo-API (repo)
    .github (folder for .md templates for github)
    ... gitignore and other git stuff
    packages
        ... all nugets
    PoGo-API
        PoGo-API.csproj
        ... sources
    PoGo-API.Tests
        PoGo-API.Tests.csproj
        ... tests
    ... Other API helping projects
    PoGo-API.sln
jakubsuchybio commented 8 years ago
PoGo (repo)
    PoGo
        PoGo
            Pogo.csproj
        PoGo.Tests
            PoGo.Tests.csproj
        PoGo.sln

    PoGo-API
        PoGo-API
            PoGo-API.csproj
        PoGo-API.Tests
            PoGo-API.Tests.csproj
        ... Other API helping projects
        PoGo-API.sln
jakubsuchybio commented 8 years ago
PoGo (repo)
    PoGo
        PoGo
            Pogo.csproj
        PoGo.Tests
            PoGo.Tests.csproj
    PoGo-API
        PoGo-API
            PoGo-API.csproj
        PoGo-API.Tests
            PoGo-API.Tests.csproj
        ... other API helping projects

    PoGo.sln
    PoGo-API.sln
robertmclaws commented 8 years ago

So, here is my suggestion, based on managing a 50K+ LoC project by myself for the last 5 years.

Principles:

Observations:

Given all of that, I propose the following structure for the Repo and the Solution:

Repo Structure:
PoGo (Repo)
   - docs (specs & to-do lists)
   - packages (excluded)
   - reference (screenshots, official app assets, etc)
   - src
      - Google.Protobuf
      - PoGo.ApiClient
      - PoGo.GameServices (or GameEngine(s) if you think that is better)
      - PoGo.Windows
      - PoGo.Tests.ApiClient
      - PoGo.Tests.GameServices
      - PoGo.Tests.Windows
      - PoGo.sln
      - PoGo.Api.sln (If necessary)

Solution Structure:
PoGo.sln
   - Core
      - Google.Protobuf.csproj
      - PoGo.ApiClient.csproj
   - Tests
      - PoGo.Tests.ApiClient.csproj
      - PoGo.Tests.GameServices.csproj
      - PoGo.Tests.Windows.csproj
   - Windows
      - PoGo.GameServices.csproj
      - PoGo.Windows.csproj

A dotted folder structure helps denote functionality while maintaining a reasonable sort order. Separating source from other stuff helps keep the repo clean. And reducing the nesting structure means my local GitHub folder doesn't look like d:\GitHub\PoGo\PoGo\PoGo.

In this structure:

If this next round of dev focuses more on structuring well for testing, we can have CodeClimate (or something else) run the unit tests before the PR can be accepted.

That's my $0.02. HTH!