|
I usually shelve my changes or branch them then copy from shelveset/branch to trunk/main, etc. I don't create separate projects unless I have to , which is rare.
I will however create separate console apps sometimes to test services, web apis, etc. if I don't use a unit test to do that, which can be convenient, even though it is not really a "unit test".
|
|
|
|
|
Slacker007 wrote: I usually shelve my changes or branch them then copy from shelveset/branch to trunk/main, etc. I don't create separate projects unless I have to , which is rare. You mean like, some code that you can look up later?
I didn't mean create new projects just to test/save some code, but because the business actually requires them.
I work for multiple customers and all do microservices (because I've said so)
I created at least ten new serious projects that will be/are in production this year alone and they all need "the basics" like authentication, database, DI, etc.
I've considered writing a utility package and re-use that, but it's not really worth it as it's mostly two lines here, two lines there, with usually slightly different parameters as well.
Slacker007 wrote: I will however create separate console apps sometimes to test services, web apis, etc. if I don't use a unit test to do that, which can be convenient, even though it is not really a "unit test". I do that too sometimes. It's more of an integration test I guess.
|
|
|
|
|
At work we've got a starter solution with all the stuff built in that's to be used as a baseline for new development so we don't have to reinvent the wheel and to keep all our solutions organized somewhat similarly to make it easier for anyone switching projects to get up to speed.
Did you ever see history portrayed as an old man with a wise brow and pulseless heart, weighing all things in the balance of reason?
Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful?
--Zachris Topelius
Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies.
-- Sarah Hoyt
|
|
|
|
|
Nah, I'm far too lazy for that. I would instead do the following:
Create a project, figure stuff out, finish (or don't) project.
Have requirement to do second project with similar stuff.
Put second project on hold.
Create "template project" that has all the figured out stuff in it (auth, setup, etc.)
Copy template project and rename it project 2.
Repeat as needed, and update template if new "common stuffs" are identified.
|
|
|
|
|
musefan wrote: Create "template project" that has all the figured out stuff in it (auth, setup, etc.) I created a template project once... Never again
|
|
|
|
|
I largely start over. But do reference how I pulled something off in old code.
|
|
|
|
|
Wait, you mean like a regular project that you copy/paste and then rename?
Not like a Visual Studio template?
In that case it's almost what I do too, except I copy the code rather than the template because I can't be bothered with renaming templates and namespaces
|
|
|
|
|
Yeah, I mean a regular project... I have no desire to mess with VS templates either.
The renaming process was only a pain the first time (just because I had to work out how to even do it properly). But after that I wrote the steps down and it was pretty easy to do it in a couple of minutes. Which is fine if you only need a copy once a month for example.
I don't have a need to do this anymore due to my current job requirements, but if I did, I would no doubt have created a "VS solution renaming tool" by now
|
|
|
|
|
I re-use a LOT of code. New projects simply get references to older assemblies.
My most often used are:
- "Common", which contains object extensions, connection string handling, attributes, and otherwise universally usable code
- "DAL", which contains database access code (that also references "Common"
- "WpfCommon", which contains controls, converters, a base class that supports INotifyPropertyChanged and IDataError, and my WPF wizard control stuff
As I go, I add things to those three, but since they've all been in my library for at least 10 years, they're pretty stable. Today, I added some extension methods for strings that allow me to perform ToUpper() and ToLower() on the specified part of a string, as well as a method that performs a Replace for all instances of a substring (like when you have an unknown number of consecutive spaces, and you want to reduce it to just a single space).
As far as starting a project from scratch, I have a MVC template I use that includes a lot of stuff I always do.As I add stuff to that list of things always done, I update the template. It includes all of the NuGet packages I use, and adjustments to the various files.
I created a "super" template for work that supports our app development techniques, and it starts you off with a complete running app with user reg/login, layout, and database support. The generated app includes documentation regarding how to code in the eco-system and where to find stuff. To make it app-specific, you only have to change one variable in Globals.asax.cs. The template already references the "Common" and the "DAL" assemblies, as well as app-specific BLL assemblies.
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
|
|
|
|
|
No, really not. When you have stuff that is worth keeping, then give it its own project, maintain it there and add this project to any solution where it may be needed. This way you don't have redundant code floating around and don't accidentally import outdated stuff into a new project. And yes, it's peerfectly ok to maintain several such assemblies. You are not forced to marry things that don't belong together.
I have lived with several Zen masters - all of them were cats.
His last invention was an evil Lasagna. It didn't kill anyone, and it actually tasted pretty good.
|
|
|
|
|
Depending on what I'm doing I always have a base starting point. If I'm making a mobile app, I have my base "mobile app" setup with a bunch of functions that I use all the time.
If I'm working on a PHP web project I always include my common PHP functions that I use a lot. These bases grow over the years and I"m constantly adding to them and sometimes removing stuff when the language i'm using adds new functions that solve stuff I had solved by making my own!
Good times. Starting from nothing is no fun.
|
|
|
|
|
This is a very good and interesting post.
I know you are an intelligent developer, so please understand what I'm saying is not about you not knowing this stuff.
It's incredibly interesting that there is so much copy/paste that goes on in this modern age and not near as much true re-use going on which is a huge part of OOP philosophy.
Again, I'm pointing this out not to indicate that you are not a smart dev, but that there are obviously some bits and pieces missing that don't allow re-use to be as easy as they should be.
The auth thing is terribly crazy to me that there isn't just a reusable pluggable component that everyone would be using.
|
|
|
|
|
raddevus wrote: The auth thing is terribly crazy to me that there isn't just a reusable pluggable component that everyone would be using. There is, but the URL's, client ID's, passwords, etc. are different each time.
So, copy paste and change those variables.
I always rename cookies, so:
services.Configure<CookieAuthenticationOptions>(AzureADDefaults.CookieScheme, options =>
{
options.Cookie.Name = "MyProject.AzureAdCookie";
}); Most stuff isn't worth putting in a library, like:
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("AzureAd", options)); But it gets copy pasted ALL the time
Perhaps a small library containing all that stuff..., but that's a library for four lines of code
MyUtils.ConfigureAzureAd("MyProject.AzureAdCookie"); Creating a NuGet repository is more trouble than it's worth though.
And if the code is customer specific you can't really have packages like "Sander.Utils" around either, they expect "Company.Utils" at the least, but so does that other customer.
So not even packages are always reusable
It's also a bit different for Azure Function projects, etc.
raddevus wrote: I know you are an intelligent developer
|
|
|
|
|
What you are describing is one of the things that I like about this job. Reusability! Every one of my new projects has bits and pieces of previous projects.
"Go forth into the source" - Neal Morse
|
|
|
|
|
I do it twice. Stuff that I reuse more than that gets moved over to its own project for reusing. Plus, if I find a bug of sorts I can fix it in all projects in one go.
|
|
|
|
|
When I'm trying out something new sometimes I'll make a little test bench app to learn about it. That's a whole lot easier than adding it directly to one of our products and figuring things out there amidst three million lines of code.
Software Zen: delete this;
|
|
|
|
|
Message Closed
modified 12-Sep-19 8:07am.
|
|
|
|
|
Do you mean compile or actually test?
A function that adds a and a instead of a and b compiles fine, but it's still a bug.
I compile more often than test.
How often I compile depends on what I'm doing.
If I'm writing new functionality I usually don't compile until I think it's (partly) done.
Whenever I'm fixing bugs or typo's I sometimes compile after every few keystrokes.
And I save VERY often, like every minute or so (and sometimes more often).
|
|
|
|
|
Probably many of you already now it but just in case...
I was searching for an issue I am having with routed commands. I found a blog speaking about the article "Understanding Routed Events and Commands In WPF" by Brian Noyes and I just found:
MSDN Magazine Issues[^]
MSDN Magazine-Ausgaben[^] (Same site, German Version)
In there you might find a copy of all MSDN magazines to read online and or download for offline use. (Prior 2008 are in *.chm help files, which I actually find better as the PDF edition)
Thanks for it, Microsoft
(I only hope they don't deactivate the site after switching MSDN off)
EDIT: Just found another source (just in case): WebArchiveOrg : MSDN Magazine[^] (goes back to april 2008)
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
Help me to understand what I'm saying, and I'll explain it better to you
Rating helpful answers is nice, but saying thanks can be even nicer.
modified 19-Sep-19 4:25am.
|
|
|
|
|
Nice, I started programming in August 2010.
The magazine for that month features an article about migrating to the Azure cloud, something I wouldn't be doing for another seven years or so.
The article is useless because everything changed.
There's an article on Windows Phone 7 (speaking of useless)
There's an article on Entity Framework by Julie Lerman, still with the old EDM file and the designer, something they've got rid of altogether with EF Core.
Something about Lazy<T> being cutting Edge (no, not the browser).
And something about NHibernate and Rhino Service Bus... Does anyone actually still use those?
Oh, how times have changed
|
|
|
|
|
Sander Rossel wrote: The article is useless because everything changed. There are probably going to be some of those cases... but still is a good collection.
And many other things are still relevant (or at least I hope so)
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
Help me to understand what I'm saying, and I'll explain it better to you
Rating helpful answers is nice, but saying thanks can be even nicer.
|
|
|
|
|
Thanks! Bookmarked!
"Go forth into the source" - Neal Morse
|
|
|
|
|
You are welcome
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
Help me to understand what I'm saying, and I'll explain it better to you
Rating helpful answers is nice, but saying thanks can be even nicer.
|
|
|
|
|
Nelek wrote: (I only hope they don't deactivate the site after switching MSDN off)
Just download the PDFs...? The filenames all follow some pattern as I recall, so you could even script it.
Why people rely on links, especially on something that has had a history of changing so frequently as those from MS, instead of downloading stuff when it's an available option...I'll never understand.
|
|
|
|
|
I am going to download it, but the pattern is not that easy.
Code samples are named correctly, the rest have cryptic names not that correlated as I would like.
If I have to do it manually... it will take a time, but I will do it too
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
Help me to understand what I'm saying, and I'll explain it better to you
Rating helpful answers is nice, but saying thanks can be even nicer.
|
|
|
|
|