-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Feedback from CS2103/T and CS2113/T AY1819S1 students #931
Comments
Inb4 Java 10 no longer available publicly. I don't know, I feel the difference in love put into AB3 compared to AB4. So maybe updating it would be great. (Especially the documentation / usage of tools that are present in 4 but not in 3). I guess most of ya expected us to use AB4 instead of 3, but the issue was this cohort did not have prior Java knowledge so it was hard to grasp how AB4 work within the time span.
Why the usage of prefixes to delimit arguments (other than making it easier to parse). Feels a bit unnatural. Cause I feel that if ya gonna use prefixes, then also prefix the index commands (delete i/1), cause I feel its a tiny bit of conflicting design ideas.
Void commands (list) and index commands (view/delete) can accept trailing arguments (ie |
Did you encounter any bugs with the code provided to you? |
Were there any issues with the code that made it difficult for you to implement your features?
Did you encounter any bugs with the code provided to you? ( i am not sure if it was intentional):
|
General issues: 1) There are two different formats for the overriding of the In
In
Personally, I find the latter to be easier to read (and modify should the need arise), but it would have been better if it was just standardised across the entire project. Also, a related point: it is usually recommended to override both 2) Defensive programming against There appears to be two different ways to prevent null values from being passed, namely 3) Awkward style for It's unconventional, IntelliJ doesn't like it when we try to indent 4) Unnecessarily stringent checkstyle rules Particularly annoying are: 5) focus_helpWindowNotFocused_focused test is always skipped due to "an illegal reflective access operation" Not sure whether this counts as a bug, but if this test is always skipped and never runs, it seems to defeat its purpose. I have been ignoring it all this while and it never did cause any issues, but just thought it was strange. Never had the time to look into it either. Overall, I feel that most of my "issues" are nitpicks and aren't major issues. The learning curve was definitely steep at the beginning, but working with AB4 has really taught me a lot, so big props to the developers and maintainers! (Nov 13, 23:15) EDIT: Fixed some typos |
Thanks for your feedback @nianfei97. Am writing this post because there's something I would like to highlight for one of your feedback:
Actually, IntelliJ has some settings that you can tweak, which automatically helps you to clean up the trailing whitespaces on save, and also add EOF if necessary. They can be found in Other than the fact that the corrections can be automated (which is why se-edu developers rarely have the checkstyle problems that you listed 😉), having these stringent style checks ensure that the diff shown by GitHub does not show changes to these unnecessary trailing whitespaces (which pollutes the diff and makes it harder to read). Thanks for your feedback again, I hope you enjoyed the module! |
Thanks for the detailed feedback @nianfei97 I would like to comment on the below as it was a style adopted before the current se-edu team joined the project.
From what I remember, this style rule comes from Oracle's Java coding standard. It is certainly not the most common style -- I would imagine the rationale of the styel is to reduce indentation (the alternative style adds two levels of indentation to the code). Again, you can tweak Intellij to follow this style, or any other style you want. You are right about (a) but the other intended learning outcome is learning how to tweak IDE style settings. |
@souless94 I'm commenting on the above just in case the current se-edu dev team is not aware of the rationale for this "feature", which is, it allows the user to correct certain types of mistakes in the earlier part of the command without having to use backspace. i.e., the user can simply type the incorrect field without breaking the flow of typing. It's kind of a hidden feature meant for advanced users. |
Thanks, you raised a lot of real issues. :-)
😛 Unfortunately moving AB-4 into a JDK-11+ future will require quite a bit of effort. If nobody steps up to do it soon we'll probably be going back to JDK-8.
Yes, this is a problem too. Unfortunately keeping AB-3 in sync with AB-4 isn't a trivial affair either. imo, in the near future (when we are forced to remove JAXB and hopefully EventBus is removed as well), AB-4 won't require much additional technical knowledge that is already required by AB-3, with the exception of GUI/system testing. I hope that CS2113 would try using AB-4 in the future.
Eh, I don't think its that bad to warrant a change. Its serviceable.
Yes, this can be fixed. Feel free to submit a PR. |
Yes, that is because its a programmer error. Something has gone very wrong if invalid data hits the model layer, so there is no point trying to accept it or gracefully recover from it.
The onus is on the storage layer to properly validate its data and fulfill all preconditions before passing it to the model layer. If for some reason the storage layer does not properly validate its data, then the storage layer's code should be fixed directly, rather than writing error handling code to work around it. As an aside, the parsing layer has the same responsibility too -- it needs to validate user's input before passing it to the model for processing. |
We followed https://docs.oracle.com/javase/7/docs/technotes/guides/language/assert.html
The test is only skipped in headless mode (because Monocle isn't perfect). The "illegal reflective access operation" warning is another separate issue, which isn't really an issue at present. (Basically Java saying that our code may or may not break in the future :-P ) |
Yes, it's a good habit to be aware of every single thing that is committed to version control, even down to the single byte. :-P Keeping every change as small and minimal as possible can help in e.g. identifying the exact source of a regression. The whitespace/EOF checks are an automated way of allowing us to ensure that no unnecessary whitespace/EOF changes occur in commits. |
I see. So the throwing of exception is something like an assert to ensure that the input is correct but the actual checks should be done beforehand. Then, just for curiosity sake, why the design choice to throw an exception instead of using the assert keyword provided by Java? |
I mentioned the reason in #931 (comment)
|
@hidingmode
Well, yes, if the The dependency is already there, adding it as a parameter to every command just makes it explicit.
There's still a dependency, but now it is implicit ;-) Now the entire codebase could modify the component, and readers can't tell unless they grep the source code for all uses of the singleton. It's a workable hack under time pressure, but for the AB-4 codebase, probably not :-)
Yes, the constructor (or method signature etc.) will be long, but at least its showing the full picture, which is much more important. (It may also indicate a design problem, e.g. two components could be combined into one larger component, but that really depends on the situation) By the way, would Refactor -> Change Signature in IntelliJ help? |
To: CS2103/T and CS2113/T AY1819S1 students
Congratulations on completing your project! Now that you have spent a few weeks working with AddressBook-Level4, we would like to know your thoughts on the code base.
Specifically,
Person
suddenly made immutable in Level4? I wantReadOnlyPerson
back!"Config
when there is alreadyUserPrefs
?"Not quite applicable:
This is a chance for you to get your burning questions answered, and to contribute towards improving later iterations of the AddressBook-Level4 code.
Note: we are not part of the CS2103/CS2113 teaching team, and so any feedback given by you will have no effect on your grade (positively or negatively). As such, we would appreciate your most candid feedback 😄
Alternatively, you may contact us or chat privately with us on Gitter.
(PS: We are always in need of help! Do consider contributing!)
The text was updated successfully, but these errors were encountered: