As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I have about four years of experience as a Java developer. I'm planning to get myself involved in the world of UML. Can anyone suggest some good books and reference material for UML?
UML Distilled, by Martin Fowler.
I have it here, and it's a very good introduction. Actually, it was a "required reading material" for my university, so can be thought of as a textbook as well.
Book Applying UML And Patterns
http://www.craiglarman.com/wiki/index.php?title=Book_Applying_UML_and_Patterns
I used it during my study
I would recommend The Unified Modeling Language User Guide, written by the creators of UML, the "Three Amigos" of software engineering (Grady Booch, Ivar Jacobson and James Rumbaugh).
Check out the UML Resource Page of the OMG. Among other resources, this page has links to the latest UML specifications.
There are plenty of good books available as well:
The Unified Modeling Language Reference Manual - Rumbaugh, Jacobson, and Booch
The Unified Modeling Language User Guide - Booch, Rumbaugh, and Jacobson
UML Distilled - Martin Fowler
I am currently reading:
Object-oriented Systems analysis and design using UML
By Simon Bennett
It is given as indicative reading on my degree course, and has genuinely helped me a lot.
Don't read any book because all these guys just talk about UML but not about real life.
I would recommend to manually code and then reverse your code into a class diagram. You can also reverse a sequence diagram from your methods.
Don't do more and certainy not read books because it is a waste of time :-)
Related
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I'm doing some text mining in web pages. Currently I'm working with Java, but maybe there is more appropriate languages to do what I want.
Example of some things I want to do:
Determine the char type of a word based on it parts (letter, digit, symbols, etc.) as Alphabetic, Number, Alphanumeric, Symbol, etc.(there is more types).
Discover stop words based on statistics.
Discover some gramatical class (verb, noun, preposition, conjuntion) based on statistics and some logics.
I was thinking about using Prolog and R (I don't know much about these languages), but I don't know if they are good for this or maybe, another language more appropriate.
Which can I use? Good libs for Java are welcome too.
python.!
They have a HELL-LOTTA libraries in this area.
but, i've got no knowledge about prologue and R.. but definitely py is LOT better than java in text mining, and AI stuff...
I highly recommend Perl. It has a lot of text-processing features, web search and parsing, and a large etc. Take a look at the available modules (>23.000 and growing) at CPAN.
I think Apache Solr and Nutch provides you the framework for that and on top of that you can extend it for your requirements.
Java has some basic support, but nothing like the above two products, they are awesome!
HTML Unit might give you some good APIs for fetching web pages, and traversing over elements in DOM by XPath. I have used it for sometime to perform simple to more complex operations.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
The community reviewed whether to reopen this question 11 months ago and left it closed:
Original close reason(s) were not resolved
I am a Java developer, and I'm interested in improving the quality of my Javadoc comments in the code and programs I write to make it more comprehensible and easier for other developers to implement.
I've read lots of articles, including those from official sources, and I try to follow the guidelines stated in the book
"The Elements of Java Style", but despite this, and after searching extensively online, I can't seem to find a practical way to compare my existing Javadoc(s) to model examples and maintain best practices for Java API documentation.
Peer review.
Try and find someone outside your team (a customer) and ask them what they think about your JavaDoc.
The customer is always right.
Also i can share you some stuff below
A great read on writing javadoc is at the sun site at http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html
The best thing I've learned from that text is probably that your class level javadoc should start with "Provides". This forces you to think about what that class provides to your program (or the world). It's not uncommon for me to redesign software because writing javadoc made me think "hey, this is not needed here!".
Other practical tips: When a getter is interesting, try to write it in the #returns tag. Not doing so might mean that you type stuff twice, once in the javadoc, and once after the #return tag.
An the best tip: If you don't know what to write, DONT. the Javadoc parser does a great job of automatically generating getter javadoc for example, but it only does it when you didn't add a /** */.
Javadoc should desccribe WHAT your method does, not HOW.
Javadoc is not your todolist. I've tried it, but for larger projects, it simply doesn't work.
In addition to the Sun's (now Oracle) documentation at http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html I would recommend the "Item 44: Write doc сomments for all exposed API elements" from the "Effective Java" book by Joshua Bloch, 2nd ed. pp.203-208. This is a 6 page recommendation/tips with several practical examples.
You can use #link parameter for 'VoucherStore'
Example:
#return {#link VoucherStore} type Concrete Object based on storeType parameter
instead of
#return returns VoucherStore type Concrete Object based on storeType parameter.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
The community reviewed whether to reopen this question 1 year ago and left it closed:
Original close reason(s) were not resolved
Hi
I have an assignment to teach a team the subject of design principle. As a final exercise to this mini course, I thought to give them an exercise in design pattern, in Java.
My idea is to give them a code written badly, and they should refactor it using several design patterns. I didn't find anything similar to that in my search (both in the web and in stack overflow).
Any references to something similar to what I'm looking for?
Thanks
One of the best sites out there : http://www.industriallogic.com/xp/refactoring/catalog.html
They basically show you code, and then the re-factored code. Its not going to be one big hopping pile of crap, but you can take an aggregate a couple and aggregate them together to form some ugly code, and then do the same to show the solution.
You can check this book "Refactoring: Improving the Design of Existing Code" of Martin Fowler. It contains examples of "smell" coding and provide solution to refactor it.
This has alot of code filling the bill. The author, Joshua Kerievsky, is also the founder of Industrial Logic, which has (as Nix noted in his response) good material on this topic, drawn from and augmenting this book.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 12 years ago.
I know that is Collections.sort() method in Java but I think quicksort is worth to remember and try.
My work target is general Java: web, database access, integration, not game developer, scientific application or another one that depends on advanced algorithms.
Which algorithms should I learn to pass without stress Java developer interview?
Fizz Buzz
I usually don't care, if a developer knows the basic algorithms by heart. I do care, if he is capabale of understanding requirements and translating them in correct, testable and understandable pieces of code.
Ah, and I do care if he knows how to implement the most common design patterns. And he should know when and how to use collections, threads and - String#split - it's amazing how many "developers" don't know how to read and process a simple csv file.
Although I fully agree with Joachim comment, I would go for : collection selection. This is not an algorithm per se, but rather a good view of which collection is good for which purpose :
sorted content with constant lookup time ? TreeSet !
mapped data with memorization of insertion order ? LinkedHashMap !
using that, and some knowledge of design patterns behind collections, you will far too often reply to algorithms questions using the knuth answer (or the subtle variation : as long as Sun developpers implemented it correctly, I only have to choose wisely).
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 12 years ago.
This is a subjective question just to get a general impression. As Java is the most popular programming language right now it is used as a benchmark.
Lets say I have to spend T amount of time/effort to learn/master Java. By what factor should I multiply T to get a time/effort needed to learn/master other language instead, say C, C++, C#, python, perl, Lisp, Haskel, PHP?
My guess is:
0.5T PHP
0.9T python
1.1T C#
2.0T C++
3.0T C
What do you think?
Personally, I'd suggest Brainfuck. It's my favourite language for beginners. Don't worry, the name is joke!
Dartmouth BASIC was designed to be easy to learn and easy to use. For what it did, it was a howling success on both counts.
MIT used Scheme (dialect of LISP) in course 6.001 for many years, and concluded that it was a lot easier to learn, at least initially, because there was essentially no syntax to trip students up.
Back in the late Steam Era, when mainframe dinosaurs still ruled the Earth, the UT Austin Computer Science Department did side-by-side tests, teaching FORTRAN to some of the freshman and PASCAL to others. Their conclusion was that PASCAL's pickier syntax was INITIALLY harder to learn, but the PASCAL students consistently spent less computer time, and less runs (batch processing, punched cards), getting their homework running, even though their homework assignments were typically harder.
C and C++ have very, very similar core languages. 90% of the code you write will be identical in all four languages, after allowing for personal taste in design and naming conventions. C doesn't really have anything above the core language, while C++ adds classes and templates. I'm not familiar with C# or Java, beyond a rudimentary feeling that they both started with C and went from there.
Ada was, in my personal experience, not difficult to learn, and the compilers were picky enough that syntactically-correct code generally worked as intended on the first try. Other people have also noticed that property of Ada.
This is so subjective that it cannot be answered. It totally depends on what you need to do with the language.