|
I was looking back at my first worthwhile project and I notices that I made a more than a few functions to separate my code as it was getting cramped. While it seems to do the job, it is harder to maintain and is far from the ideals of Object-Oriented Programming (OOP), especially the encapsulation aspect ! Refactoring the code seems attractive but the time expenditure doesn't seem to outweigh the advantages I'd have from fast maintenance and portability as it seems too project-specific. However, I'm looking for a general guideline so that I may approach the solution from a more distanced point of view.
Je vous salue du Québec !
|
|
|
|
|
DynV wrote: I'm looking for a general guideline
I have no experience with OOP effecting portability. That said, any decent (means not lousy) OO design that has minimal documentation is far easier to maintain/extend than spaghetti code. Furthermore any decent organized/structured non OO design that has minimal documentation is far easier to maintain ( extending might be different) than spaghetti code.
For me the bottom line is, if you are at all suspicious about frequent requirements to "extend" the system OO is the way to go.
|
|
|
|
|
If it's a persuading management thing then I'd always argue that if I left and someone else had to look after the code then it would be easier and more cost-effective with regards to training and hand-over for it to be written in a proper OO way. I'd also always argue that something written well is always easier to extend later on if needed, whereas something that isn't is more likely to cause problems later on.
That last argument is always easier to argue if the system hasn't been running without problems for a while.
|
|
|
|
|
Hi - I have an app that reads a csv file line by line, parses for two fields, sends a query to a web server, receives four data fields back, and then writes an output line with the new fields followed by the contents of the input line.
My problem is that the four fields are bracketed in quotes, and the entire input line is included in a set of quotes, so if I then open the output file with excel, the input line contents are treated as a single cell - not a series of csv fields.
I then changed the code to loop through the fields and put commas in the string - but the output line still has quotes at the start and end of the string - so I I wan to use in Excel - I still need to open as a text file an strip out the pesky quotes.
What to do ??
Here is the code doing the data assembly
ID = ID + 1
WriteOutputLine = ID & "," & response.GeocodedAddresses(i).Alternatives(0).Quality.ToString & "," & HouseNo & "," & Street & "," & City & "," & State & "," & Zip & ","
For DataFieldCount = 0 To lineArray.Length - 1
WriteOutputLine = WriteOutputLine & lineArray(DataFieldCount) & ","
Next
WriteLine(2, WriteOutputLine)
Here is a sample input line . .
37.30840674,-122.0333179,-122.029614,37.30833842,1083.826,179,299,WGS 84,SCMAD20070713,Murky Pool,,7/13/2007 21:43,IMG_6212 copy_tag.jpg,IMG_6212 copy.jpg,,,585992.34,4129519.64,10 N,7/13/2007 14:43,,178.7832,100.2,,,,Canon Canon EOS DIGITAL REBEL XT Adobe Photoshop Elements 4.0 Windows
Here is a sample output line
"1,Exact,7360,Fallenleaf Ln,Cupertino,CA,95014,37.30840674,-122.0333179,-122.029614,37.30833842,1083.826,179,299,WGS 84,SCMAD20070713,Murky Pool,,7/13/2007 21:43,IMG_6212copy_tag.jpg,IMG_6212copy.jpg,,,585992.34,4129519.64,10 N,7/13/2007 14:43,,178.7832,100.2,,,,Canon Canon EOS DIGITAL REBEL XT Adobe Photoshop Elements 4.0 Windows,"
rfrank5356
|
|
|
|
|
Have you tried windows version of sed or awk?
They will strip quotes instead of you
Attached code shouldn't return quoted string, so i think quotes are added during saving to file.
H.
|
|
|
|
|
Hi
I am looking for some 'ready to use' application framework for writing small or mid sized apps (both win and webforms). I have tried Lhotka's CSLA, but it has some disadvantages like lack of data paging or awful cooperation with nHibernate which I decided to use as the data layer.
My last found is the Developer Express OXP+eXpress App Framework. It seems to be complete - starts with data mapping, has included reporting solution, data controls and all of this stuff. I haven't tried to build anything on this, but it looks very promising, however it is beta version with no known official release date.
My needs are simple - ability to work wih MS SQL, less than 100 classes in project. Since we integrate our apps with existing solutions, databases are exist (or exist in part), so data mapping has to be flexible enough to use existing data (and all of goods like database schemes etc.)
So - what do you use? What can you suggest?
|
|
|
|
|
Forget about all this ORM stuff - you will regret it in the end.
|
|
|
|
|
Have seen CSLA go very badly, but it might have been simply the customized way it was implemented here. The higher ups want to have another go at it but I am doubtful.
Have you considered microsoft application blocks? After a cursory look it seemed promising, but I haven't had a chance to dig into it.
|
|
|
|
|
TopCoderJax wrote: Have seen CSLA go very badly
I am not sure what you mean, but I think DataPortal concept is a little bit too "enterpise" for the rest of the framework.
drinkwater wrote: Forget about all this ORM stuff - you will regret it in the end.
What I really appreciate in ORMs is dynamic SQL. The Microsoft Application Blocks documentation says (http://msdn2.microsoft.com/en-us/library/ms978510.aspx#daag_datapaging[^]):
<br />
The options for data paging are:<br />
<br />
* Using the Fill method of the SqlDataAdapter to fill a DataSet with a range of results from a query<br />
* Using ADO through COM interoperability and use a server-side cursor<br />
* Using stored procedures to implement data paging manually<br />
Best choice for me is the fourth one - dynamic SQL which is build during app's runtime with all the filters taken from UI, with all the order clauses needed, with paging etc..
Lower performace is the price I can pay for it in smaller apps (in bigger too, being honest )
Maybe I should find some runtime SQL query generator and build it into CSLA or any other nice framework?
|
|
|
|
|
..Hubert.. wrote: Best choice for me is the fourth one - dynamic SQL which is build during app's runtime with all the filters taken from UI, with all the order clauses needed, with paging etc..
Why is that "Best choice" rather than Stored Procedures and SqlCommand approach?
|
|
|
|
|
I really hate writing stored procedures
Small or mid projects are almost always not well specified which means, that there's huge risk of changes.
With ORM approach you can just add new properties to your objects then add new fields to tables and you're ready to go (yeah, most of them arent't so easy, but let's assume they are).
With SPs you have to change tables, SProcs and loading code. There's one more catch-up - deployment.
That's why I prefer ORMs in small apps.
However I've got one question - how do you write SPs which returns lists of objects with pagination and order passed from UI?
|
|
|
|
|
..Hubert.. wrote: how do you write SPs which
I am not a DBA. If you are serious about that question try asking in the SQL forum. I think there are some pretty sharp people in there.
So your answer to my question is "changes"? And there are less changes using embedded SQL than using stored procedures? In my experience I have not found that to be true.
Also your first post states that you want to use dynamic SQL (embedded SQL) and the last one talks about ORM. Which is it?
|
|
|
|
|
you could try mixing it up a bit. i'm trying diamond binding (dunnchurchill.com) at the moment (some guy on here suggested it recently), which takes care of the data-end really well. seems to be based on nhibernate - and you can do custom mappings manually using attributes.
it doesnt do the gui side though, but i've found the data layer it creates is really clean, so you could use whatever tool you wanted (i'm just using the inbuilt databinding in VS). not sure if anyone can suggest a good business object to gui framework?
|
|
|
|
|
I've written a synth toolkit in C#. I'm adding the capability to record the output as a wave file. I'm trying to nail down the design for doing this. Here's the approach I currently have implemented:
- User hits record (a check box with a button appearance).
- Synth engine begins recording output memory
- User hits record a second time
- Synth engine stops recording
- User is prompted and asked if he/she wants to save the wave data
- If user says yes, the user is prompted for a file name, and the wave data in memory is saved to disk
- If user says no, wave data is cleared
The problem with the above is that wave data takes up a lot of memory. If the user wants to record for say an hour or so, he/she could run out of memory. I found this out when I forgot to stop recording and ate dinner. When I came back, the computer was slugish due to low memory.
So I was thinking that a better approach would be to record directly to disk:
- User hits record (a check box with a button appearance).
- Synth engine begins recording output to a temporary file
- User hits record a second time
- Synth engine stops recording
- User is prompted and asked if he/she wants to save the wave data
- If user says yes, the user is prompted for a file name, and the temporary file is renamed to the new name
- If user says no, the temporary file is deleted
Perhaps I should set a limit on how large a file is acceptable so that it's not possible for the program to use up all available disk space. Hmm, maybe I could use that approach for recording to memory instead?
Any thoughts? Details I may be overlooking?
|
|
|
|
|
Hi Leslie,
I would suggest you add an options dialog, that lets the user choose the maximum capture
period (say radio buttons for 10 sec, 1 min, 10 min; or a textbox); then have the record
button record to memory for that time (or until clicked again), then do the save/saveto
dialog stuff you described.
I would not automatically save to temp file on disk, unless you take some precautions
limiting both the size and the number of such files; without limits, you may find yourself
cleaning up the disk quite often.
|
|
|
|
|
Luc Pattyn wrote: I would suggest you add an options dialog, that lets the user choose the maximum capture
period (say radio buttons for 10 sec, 1 min, 10 min; or a textbox); then have the record
button record to memory for that time (or until clicked again), then do the save/saveto
dialog stuff you described.
That sounds excellent. Will do. Thanks!
|
|
|
|
|
Glad to help.
The more challenging option could be: record for ... sec/min
or [checkbox] until 3 sec of silence occurs.
|
|
|
|
|
Also, you could add in support for both. This way for people who wish to record large amounts they have the option of recording to hard disk. But also include a restraint option in the config dialog similar to what you'll have for in memory recording.
This statement was never false.
|
|
|
|
|
Hello guys, i'd like to implement the undo and redo function(like Undo and Redo in MS Word) by combination Command and Memento design pattern. I've found a quite useful article about this but it did not mention Memento.Can anyone tell me how to combine these two design pattern?I've also searched around but these articles are either about Command or Memento not both of them.
Thank you
|
|
|
|
|
It's not common to combine the two patterns to perform Undo/Redo. I would suppose that you would need to identify against each action whether or not it was specified with a Memento or a Command. This is not a good design.
Deja View - the feeling that you've seen this post before.
|
|
|
|
|
Had this question in the wrong forum.
I'm at a breakpoint with my architecture and could use some guidance in finishing up my vision. I will give a rundown of the current architecture so far:
This is a plug-in architecture, that automates the loading and un loading of plug-ins for the users and developers. By using a defined interface and custom attributes my architecture will auto load plug-ins without the use of ini files or configuration files.
The current issue I have is security and applying security filters to screens as they display. What basically will happen is an admin will setup security and access points for roles. Roles are then assigned to a user. What I need is to be able to disable, hide, unhide or re-enable elements on the form at the time the page is loaded based on that users security role. This is simple if I have every developer call a set of security procedures, but what I want is the framework to automatically do this for the developer.
The one idea so far is the use of “Application Event Handler” which is looking for a certain windows message to be sent.
I was wondering if anyone else had any other ideas that might be worth looking into. ( IE: any patterns or such)
Thanks for the Help.
Sal
|
|
|
|
|
ssack wrote: IE: any patterns or such
Have you had a look at the Portland Pattern Repository?
|
|
|
|
|
No i have not, thanks for the heads up and i will take a look.
|
|
|
|
|
Hello,
I have drawn some diagrams in Rational Rose 4.0, now i want to generate code from these diagrams. anyone who has already done this, please guid me how to generate.
Thank You
Qaiser Nadeem
Regards, Qaiser Nadeem
|
|
|
|
|
FishiFishi wrote: I have drawn some diagrams
Class Diagrams? That is what the code is generated from.
FishiFishi wrote: please guid me how to generate.
Use the "Rational Rose Help" if you don't know where in the menu items to go.
|
|
|
|
|