17 Comments

I have gone through Code of StackOverFlow. I just wanted to add a suggestion for your StackOverflow class.

Instead of writing all methods below inside StackOverflow class, Create a Multiple Class such as UserService, QuestionService, VotingService , etc.

By moving these methods to respective class , it will be more modular, extensible.

UserService

createUser(username, email): Creates and registers a new user in the system.

getQuestionsByUser(user): Searches questions added by a user.

QuestionService

askQuestion(user, title, content, tags): Allows a user to ask a new question.

answerQuestion(user, question, content): Allows a user to answer an existing question.

addComment(user, commentable, content): Allows a user to add a comment on an existing question/answer.

acceptAnswer(answer): Mark an answer as accepted

Voting Service

voteQuestion(user, question, value): Registers a vote on a question.

voteAnswer(user, answer, value): Registers a vote on an answer.

SearchService

searchQuestions(query): Searches for questions based on a query string.

@Ashish , Let me know if i am thinking in right directions ??

Expand full comment

Makes a lot of sense. Thanks for sharing your insights.

Expand full comment

Thanks for sharing the valuable content bro 🙌🏻🙌🏻

Expand full comment

you are welcome!

Expand full comment

It was really awesome to go through.

Expand full comment

Glad to hear this, thank you!

Expand full comment

Thanks for explaining in a detailed way.

It's very easy to understand.

Expand full comment

Great to hear this, thank you!

Expand full comment

A good object-oriented design exercise can tell a lot about candidates.

This is a great example, Ashish!

Expand full comment

Really Great👍

Expand full comment

thank you!

Expand full comment

Way of explanation is awesome. Keep continue👍

Expand full comment

thank you so much!

Expand full comment

Excellent share...

Expand full comment

thank you!

Expand full comment

for now in above code we are not using Votable interface, so instead of writing voteQuestion and voteAnswer method we can use single method- addVote(user, Votable, value).

Expand full comment

agree.. we can utilize the Votable interface here

Expand full comment