|
I prefer the former because I often find that I have build scripts that invoke language specific tools, so I might have input files for the CPP project that are not source files, but rather, input files for tools that generate source files. Same with C#
There are other cases too where I might have non-source inputs that are nevertheless language specific.
Putting everything under the CPP branch, including the non-source input files - everything that is needed to build the CPP project makes it easier to use and copy the projects as complete and hopefully self contained sub-projects of code. I mean sure, it's not the entire overarching project, but where I can I prefer each sub-project to build on its own as much as feasible.
The same goes for the CS projects as it does for the CPP, i just used CPP as the example above.
I hope that makes sense.
Real programmers use butterflies
|
|
|
|
|
honey the codewitch wrote: I hope that makes sense. It does, the right question is... Am I still understanding what you were saying? Or just interpretating what my mind wants to read instead?
BTW I added a bit more info in the OP, just in case you want to have a look
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.
|
|
|
|
|
I read what you added and I still think the former. The other reason I like the former structure is that it's easier to separate by binary deliverable - not that you can't place those wherever you like, but, producing the deliverable requires that subfolder tree, rather than the entire tree.
Real programmers use butterflies
|
|
|
|
|
If you have are making two (or "n") alternate implementations of the same application, I would prefer alternative A: You probably have different developers for the language alternatives, and if the languages are quite different you would not regularly compare, say, the C# code against a JavaScript or Fortran implementation. Comparing them side by side to verify that the logic is identical (at an abstract level) is something you do not do often. At those few occasions, the effort of picking files from dispersed directories is insignificant.
The files making up one language implementation are closely related to each other. Keep closely related files close together. Files in different languages, being processed in different ways, maybe even demanding a different modularization (at least at low level) gains very little from being close together.
But I guess that your case is a single implementation, with different parts written in different languages (e.g. that the cpp code provides p/invoke interfaces, or you are running a WPF GUI in a frontend process, communicating with a backend working process written in C).
In that case, alternative B is obvious to me. Again: Keep closely related (e.g. coupled as caller and callee) files close together.
Why keep files close?
Another reply already mentioned directory-wide searches: You will want to search in a the code you are working on, with as few false hits as possible to stuff you are not working on. Caller and callee should be in the same (sub)directory.
Second: With parallel versions in different implmentation languages, you usually make a release for one language at a time. The tests are passed at different times. The system integration done at different times. So you would want to make the checkpoints etc. (e.g. creating an offline backup of all source code) at different times. Most such tasks are much simpler if the files involved are gathered in a its own subdirectory.
If you have a single implementation (with parts in different languages), but split into major subsystems, you may create new releases of each subsystem at different times, or at least you complete full testing at different times. Again, you would like a checkpoint to relate to a whole subdirectory, not some files here, some there.
I am curious about your splitting off "Test". For low level, module testing I find it natural to put it close to the code to be tested - logic module tests in the Logic directory, GUI tests in the GUI directory. Maybe even lower: If you e.g. put module test C# code into a partial class, having to climb several levels up towards the root and down several levels into the Test directory to find the test part of the class doesn't feel right. They partial classes are closely related, and should be locaded close together. It is like if you made a directory at the level of Cs, Cpp, Test, where you gather all the header / interface files in all the languages used in one place - that is not what you would do!
Integration and system tests are different matters: They should be separate from the modules they integrate, in its own directory the way you have indicated.
|
|
|
|
|
Member 7989122 wrote: You probably have different developers for the language alternatives, Nope, we are two of us. The one programing it for the last 15 years and me (got into the team over a year ago).
Member 7989122 wrote: But I guess that your case is a single implementation, with different parts written in different languages More or less. More info added in the OP.
Member 7989122 wrote: I am curious about your splitting off "Test". To be honest... I am not the "test" guy. I left the "high level" programming in the times of VC++ and MFC, stayed in automation (PLC, Robots and so) for many years, then some years more in other industrial aspects of programming and now came back to the "high level" field (just to see that the ecosystem has grown like a pest plant).
The whole concept of testing is something I still have to improve a lot, I was used to test the app by using it not by doing things on code.
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.
|
|
|
|
|
I would prefer the second option for the possibility that shared resources of any filed (logic, gui, test) will be placed more closely to those using them...
"The only place where Success comes before Work is in the dictionary." Vidal Sassoon, 1928 - 2012
|
|
|
|
|
As I am playing Assassin Creed for the first time, I am learning of those who came before, our creators, the mighty Isus.
Now, I am in awe and want to learn their wisdom.
Brother Assassins, who have followed this path before, let me know if I am on the Way of enlightenment!?
Here is a simple ethical questionnaire that will judge my progress on the way of the Isu, with my answer after each question.
Q1
5 innocents are tied on a trolley's track A. And 1 innocent is tied on a trolley's track B.
The trolley is on its way to crush people on track A very soon. However you have the power to make it go to track B, hence killing only one person.
Do you?
1. do nothing?
2. change its path to be on track B?
A: 1, Let the trolley continue! Life is pain, and killing 5 people is better at reducing misery!
Q2
A heinous crime has been committed and 2 suspects have been arrested, but it's not entirely sure if either is guilty. You are the judge condemning them.
Do you?
1. kill them both?
2. arrest them both for 10 years?
3. let them both go?
A: 1, kill them both, just to be safe. The guilty will surely be punished this way!
Q3
Your friend is hopelessly depressed. His one true love doesn't love him back He wants to kill himself.
Do you?
1. help him commit suicide to end his misery?
2. convince him there is more to live for?
A: 1, In death he will rest in peace. Achieving the ultimate goal of life!
Did I get that right?! Am I becoming as wise as the mighty Isus?
|
|
|
|
|
Q3: 3. Kill him myself for being such a whiny creep.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
OMG! You have progressed further on the way of the Isu than I have!
|
|
|
|
|
Q3: congratulate him. He can now live happily ever after. Hunting, fishing, gambling and drinking heavily. Even eat all the bacon, instead of sharing.
If you can keep your head while those about you are losing theirs, perhaps you don't understand the situation.
|
|
|
|
|
Your wisdom rival Sokrates!
Not sure it is the Isu way though...
|
|
|
|
|
My new cat, Pink, ran away last week.
Haven't seen her in 8 days now, but someone ate all her food a few nights back.
She's probably near and coming home every few nights to eat.
To make sure, I bought a camera with night vision that can detect and follow motion, notify me of any motion and record up to a few days.
I'm aiming it directly at the cat hatch so I know when she's in.
Not a fan though, this kind of stuff is often badly secured and I wouldn't be surprised if the manufacturer is now following my every move.
I hope I get Pink back soon and I can unplug and box this camera again.
|
|
|
|
|
Check your catflap - most have three modes: In only, Out only, and In and Out.
Set it to "In Only" and she can enter for food, but can't go back out again until you let her.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
My cat flap is very basic, it has but one mode.
It also has to be open permanently (using tape, because I cannot remove the flap without disassembling the whole thing) because she doesn't know how a cat flap works yet.
In hindsight, it would've been worth it to pay a little extra for a good cat flap
She "escaped" when the door was open.
I let her, because she was meowing at the door every night.
Two weeks ago she went to explore, but something scared her and she came running back, so I thought it would be alright.
Last week she also started off exploring the garden and did not go too far, until she did
|
|
|
|
|
OriginalGriff wrote: Set it to "In Only" and she can enter for food, but can't go back out again until you let her. or you may gain an angry pet raccoon (rare), badger or ...
pestilence [ pes-tl-uh ns ] noun
1. a deadly or virulent epidemic disease. especially bubonic plague.
2. something that is considered harmful, destructive, or evil.
Synonyms: pest, plague, CCP
|
|
|
|
|
... which would explain the lack of cat!
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
I don't think that's possible in the Netherlands
We have them, but not in residential areas.
|
|
|
|
|
Sander Rossel wrote: I wouldn't be surprised if the manufacturer is now following my every move. I would be. I'm pretty sure they have better things to do than watch your cat door.
Social Media - A platform that makes it easier for the crazies to find each other.
Everyone is born right handed. Only the strongest overcome it.
Fight for left-handed rights and hand equality.
|
|
|
|
|
Sander Rossel wrote: someone ate all her food a few nights back
Where is Bart, anyway? His dinner's getting all cold and eaten.[^]
Hope the cat comes back soon. Could she be pregnant? One of my parent's cats seemed to go into hiding just before she gave birth.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
She can't be pregnant unless the animal shelter lied to me.
I think she just wanted out.
|
|
|
|
|
I doubt that they watch the cat door. More likely they would like to make it a Bot. I connected one to the Internet via a spare router and a PC with a separate public IP address and all was fine. I used a spare computer with an NVR program on it. All isolated. One day, the camera said "aha, I have an update". "OK" says I, "go for it". I watched the log in the router and within 15 minutes, the camera contacted Tanzania or some such place. Since I had carelessly used the same admin password in both the camera and the PC (this is theory), it logged in to the PC and created 2 new administrator accounts (this part is fact).
So, never trust an IoT device connected to the Internet unless you make sure it can't phone some home besides yours. Real firewalls are your friend.
I use firewalls with VPN servers, never port forward. I used to be young and dumb. Now, I am old and dumb.
YMMV
If you can keep your head while those about you are losing theirs, perhaps you don't understand the situation.
|
|
|
|
|
Is the recording cloud-based ? Just switch to an sd card and close any port you are not using, so that the data stays local...
|
|
|
|
|
Sander Rossel wrote: My new cat, Pink, ran away last week.
If my owner called me Pink, I probably would, too...
Sander Rossel wrote: I wouldn't be surprised if the manufacturer is now following my every move.
On the bright side, you now have many more people looking for your cat...
|
|
|
|
|
dandy72 wrote: If my owner called me Pink, I probably would, too... I guess that if both you and your owner called you Pink, that could be considered your name, or at least nickname
In the old days of silver photography and photolabs making color prints for us, there was a well known story from Norways biggest lab about the strangely distorted colors in the photo of this cat: It looked more or less green no matter how they set the color adjustment when making the print. By going to the very end of the adjustment scale, they managed to make the cat "sort of" brownish.
But the customer complained. The very reason why they had taken this closeup photo of the cat, before cleaning him, was that he had jumped into this tray of green paint.
|
|
|
|
|
@petepjksolutionscom
Where's the CCC?
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|