|
Jacquers wrote: It works, but you don't necessarily understand the solution.
There's two categories. First, are code snippets for doing something I'm too lazy to figure out on my own and/or don't want to read through reams of MSDN documentation to figure it out. Those code snippets tend to be no more than 50 lines long (usually 1-5 lines) and I always look at the code to understand it, particularly as there are minor tweaks that often need to be made, anything from styling to turning it into a more general purpose function that I can add to my toolchest.
The second category is "this is a cool package." Examples include FluentMigrator, NewtonsoftJson, FluentCommandLineProcessor. This is the "copy and paste" an entire project into my code base. No, I don't use Nuget unless absolutely necessary. Any open source package I clone and make sure that I can build it from the source. If it has too many warnings, doesn't compile with C# 7 / .NET 4.7, builds only with x86 rather than "Any CPU" or has other issues, it's rejected. Once it passes that basic test, I don't look very carefully at the source except perhaps out of curiosity because it's too much effort to get into the thinking of the developer, however I do peruse the file structure and class structure to get a comfortable "ok, this looks well thought out" feeling.
|
|
|
|
|
I have to admit that I'm guilty of this... I need to solve a problem, so I Google, find a working solution and paste it into my code. It works, but you don't necessarily understand the solution. On the one hand having answers so easily available speeds up development, but on the other it makes for developers that don't really understand what they are doing?
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
|
|
|
|
|
Well done sir
|
|
|
|
|
I think it's fine in certain circumstances. If I need to do something that's way outside my usual scope and not something I'm likely to ever do again, I'm perfectly happy to "borrow" a few lines of code but I still like to refactor it a little and tidy it up along the way. That way I might not be getting a particularly deep understanding of the code but at least I'm figuring out what's doing what.
If it's something that I do need to know, my preferred method is to just read a few code samples and then write it for myself.
I do despair when I see people paste in what is obviously meant to be illustrative code ("myConnectionString", "yourObject", "//Do whatever you need to do here ..." etc.) and leave it in its original form.
98.4% of statistics are made up on the spot.
|
|
|
|
|
Me copy and paste code? I'm so hardcore I disable Intellisense.
|
|
|
|
|
You use an IDE? Sh*t, I used to write code in EDLIN.
|
|
|
|
|
EDLIN? Back in the day they only used zeroes, ones were too expensive.
|
|
|
|
|
The problem is not to Copy-Paste or not (I do it too)... The problem is accepting code into your application, you do not understand fully...
To look up a solution to a new problem is probably the best way to learn, but to not research it to the very end is a crime!
Skipper: We'll fix it.
Alex: Fix it? How you gonna fix this?
Skipper: Grit, spit and a whole lotta duct tape.
|
|
|
|
|
I will use a "developed control" without looking too hard (or even at all ) at the source code, provided it's from a source that I trust.
But I won't copy'n'paste code - even small snippets - without understanding how it does what it does. If I don't, then I'm in the position of "then a miracle occurs" and I can't fix it in response to changes, or do it again next time something similar occurs.
I do not understand the "grab random code from the internet and hope it works" mentality - it just seems counterproductive in the long term to me.
I don't think it does "speed up development" - it gets you out of a hole right now, but drops you in a bigger one later on!
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
OriginalGriff wrote: I do not understand the "grab random code from the internet and hope it works" mentality - it just seems counterproductive in the long term to me.
I think that may stem from the mistaken belief that there is only ever one way to do something. A sure sign of someone who doesn't have much, if any, experience understanding algorithms and/or writing code.
|
|
|
|
|
I know what you mean, and that just makes it even weirder - since it seems to be a "yoof thing" and they grew up in a much more "no-wrong answers" education system than we did. Or at least I did - there was one right answer and you were supposed to know it rather than work it out for yourself in pretty much all subjects.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
The absolute plethora of "What is the exact/right way to do this thing" questions on here, or everywhere else for that matter is perfect evidence of this.
I call it the "One Solution to Rule them All" approach, most others call it only knowing how to use a hammer.
Even more so, I laugh at the abundance of "Exam Cheat Sheets" you can easily find online now too, just go download one, memorize the thing, then pass with flying colors the next day, none of this "OH SH*T My final exam is due tomorrow, last minute studying and panic anymore ", I passed my UNI course back in the day... just. or so I'm told.
STILL CRAZY - The BEST and only way to be!
|
|
|
|
|
I had the benefit of a Navy Nuke education in the 70s when Rickover was king. If you could not, on the spot, explain the how and why of every aspect of any process in the nuclear power plant, you were not fit to serve as a nuke.
We were taught to figure out the "how and why" of everything we did, and I carried that educational philosophy over into software engineering.
|
|
|
|
|
I do the same. If I understand the code, I type in a subset of the online version without all the dead code padding that invariably will be there.
As an example, in Winforms when opening a connection, most code wraps the implicit SqlDataAdapter.Fill with explicit conn.Open and conn.Closed. I am fine with just the implicit.
Of course, I also document my code, transfer Class information to Word documents for easy re-accessing, and test the bejabbers out of it.
modified 25-Oct-17 9:25am.
|
|
|
|
|
As others say I'll also copy/paste code, clean it up, but I always take the time to properly understand [and improve to better fit the situation]. I'll never accept black boxes inside my source.
If it's a somewhat significant "borrow" I'll leave a comment/partial url in my source referring back to where I found it and the authors name - even if I subsequently / substantially rewrite it.
Why? starting from real/complete and working example: can try it, test it, and see what breaks it.
once it's initially working then I'll refer to the dry msdn docs to fully understand the methods / return values / got-yas etc.
After that very often I'll do a rewrite (and re-test) now that I have the "inner-mechanicals" in my head - to ensure I really do understand what's happening (and just in case it later breaks).
Installing Signature...
Do not switch off your computer.
|
|
|
|
|
It is not entirely the fault of the coders...
I remember being able to find manuals accurately documenting APIs and giving examples of how to use them.
Now, if I can even find the necessary documentation for something, it is just as likely to be incomplete as inaccurate. I have to rely on web searches to find code snippets where documentation does not exist.
|
|
|
|
|
I completely agree with this. I really, really miss having authoritative documentation - i.e. complete and accurate.
|
|
|
|
|
I completely agree with this. I really, really miss having authoritative documentation - i.e. complete and accurate.
|
|
|
|
|
If I copy-paste more than a few lines of code, based on an example I found on a web page (usually CP or StackOverflow), I put the complete URL to the page as a comment in the method header. That way, I can quickly go back to the original source and review the "documentation", such as it is.
|
|
|
|
|
I'm guilty of the opposite - if I don't understand a "borrowed" solution, I'll pretty much take it apart and rebuild it until I do, so in the end, even though I have a solution that I finally understand, I often feel that I really, really, should've "just moved on" and saved myself a lot of time.
|
|
|
|
|
WTF!!!!???
Do you?
Jesus Christ, that sucks. You useless lazy F*&^$*%*r
|
|
|
|
|
Yes, mankind hasn't developed because everybody invented their own version of the wheel. We have developed because we are capable of putting things together to create new things. I copy and get inspiration from other code a lot, otherwise I wouldn't be able to keep my deadlines. I do review and try to understand the code that I copy. Sometimes I need to alter it for my specific purposes but it already saves me a ton of time not having to read all the documentation. On the other hand I'm also putting my solutions out there for others to use.
|
|
|
|
|
I would never dare do that.
If my name is on the blame, then I have to understand it. If I don't, then I don't deserve my job.
If I want someone else's name to be on it, they have to have released it as a library.
|
|
|
|
|
It is one thing to copy and drop code into our apps without regard to the entire scope of it's functionality.
Quite another to take another's demonstration of how to do something in code and learn from it to develop your own rendition of the process and thereby considering the full ramifications of what your needing to do, verses what the reference source does.
One is simply shortcutting yourself, the other is enhancing the scope of your abilities.
|
|
|
|
|
KC@CahabaGBA wrote: enhancing the scope of your abilities.
I'm writing this one down.
|
|
|
|