JavaRush /Java Blog /Random-TW /專案規劃:測量兩次 - 削減一次 - 《Java 專案從 A 到 Z》
Roman Beekeeper
等級 35

專案規劃:測量兩次 - 削減一次 - 《Java 專案從 A 到 Z》

在 Random-TW 群組發布
問候,同事們。今天我們將討論在開始瘋狂編碼之前需要做的準備工作。更具體地說,是關於規劃和創建應用程式架構。 Java專案從A到Z。專案規劃:測量七次-切割一次-1但要從哪裡開始呢?如何建構這個架構?與所有事情一樣,您需要從頭開始。即 - 使用 IDEA。我們專案的想法是創建一個具有基本功能的有用的電報機器人。讓我們準確地重複一遍: “作為用戶,我希望能夠在我感興趣的 JavaRush 群組中發布新文章時收到通知。” 遵循 YAGNI 原則,我們將建立我們的應用程式。這意味著我們只會拿走我們需要的東西。我們不會因為我們想要並且有一天它可能真的派上用場而提前創建和保留功能。是的,我們將創建一個可讀且可擴展的應用程序,但這並不意味著我們將創建一個「用於成長」的資料庫模式。為了不支持這種“增長”,我決定乾脆放棄它。這將幫助我們避免開發過程中不必要的支援和不必要的測試。稍後,當我們的專案投入生產時(又是英國主義,來自縮寫 prod - 生產),我們將能夠做更多的事情。一旦你決定了一個想法,你就需要頑皮地畫畫。畫什麼?我們需要能夠保存不同用戶群組的訂閱資料。我知道您可以在 Telegram 中以聊天 ID 的形式使用使用者 ID。新文章的搜尋實際上將如何進行有一個想法:我們將搜尋所有訂閱新文章的群組並將其發送到聊天室。基於此,我們得到以下作為第一個近似值(這是沒有修飾的發展):Java專案從A到Z。專案規劃:測量七次-切割一次-2我不希望你能理解我的筆跡:我想準確地展示發展如何以及從哪裡開始。第一階段已經完成:我們已經以某種方式決定了將要發生的事情。資料庫中的模型/表如上所述。但這只是一個草稿:它可以而且應該被完善並變成更具可讀性的形式。當我打磨的時候,我想起我還想獲得機器人工作的統計數據。添加了這個。在這張圖中,它的排列內容和方式非常清楚。也就是說,其中包含哪些表和字段,表的實體名稱是什麼。決定有以下幾個:
  • 用戶 - 有關將使用我們的機器人的電報用戶的資訊。正如您所看到的,我們只保存聊天 ID 和標記,無論用戶是否處於活動狀態。為什麼?因為我們的目標不是收集用戶的訊息,而是讓用戶受益;
  • GroupSub - 這裡將顯示有關您訂閱的群組的資訊以及發送給訂閱者的最新文章;
  • 統計 - 我還沒有為其創建模式 - 我們稍後會這樣做。這不是該專案 MVP 中的主要目標。
Java專案從A到Z。專案規劃:測量七次-切割一次-3之後,我想更詳細地展示如何搜尋新文章。為此,我使用了 BPMN 圖,將其轉換為圖片並獲得:Java專案從A到Z。專案規劃:測量七次-切割一次-4這裡的所有內容都更易於閱讀和理解。我們將按照這個方案進行搜尋。經理們真的很喜歡這個方案,因為它不僅對程式設計師來說是可以理解的:D 總的來說,已經開始了。

建立工作儲存庫

最後,您可以建立一個用於使用電報機器人的儲存庫。Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 5
  1. 我們填寫我們已經熟悉的項目 - 儲存庫的名稱、其簡要描述。
  2. 新增許可證 - Apache 2.0(您可以自行選擇許可證)。
  3. 我們的專案現已可用 - 這是它的連結:JavaRush Telegrambot

在儲存庫中建立項目

要處理該項目,最好使用 GitHub 工具,例如 project. 這是什麼?您可以在此處建立任務、追蹤其完成情況並保存任務狀態。確定由誰來執行這些任務等等。為此,在建立的專案中,我們將找到「專案」按鈕,然後我們將建立一個新專案:Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 6如您所見,這裡我指出了專案的名稱,對其進行了描述並選擇了我們將使用的模板 -自動化看板。對現在的我們來說,這意味著什麼並不那麼重要。最主要的是,我們將有一個任務板,任務分成幾列,每列都是任務的狀態:
  1. 待辦事項-計畫完成的所有任務;
  2. 進行中 - 目前正在處理的任務;
  3. 已完成 - 該專案中已完成的任務。
這樣我們就可以了解任務的狀態。哪些正在進行,哪些已經完成。而且,這不僅在有團隊的情況下很重要而且很方便,而且在你自己工作時也是如此。為了讓某些內容出現在板上,您需要建立問題。

為專案編寫問題(issue)

為了了解要編寫哪些任務,讓我們決定專案中的內容。我們需要一個可以輕鬆快速啟動的應用程序,以便我們可以存取資料庫,以便我們可以管理和更改資料庫模式,以便我們可以在JavaRush中發出REST請求來獲取文章資料。基於此,您可以選擇以下技術:
  • SpringBoot - 作為我們應用程式的框架,
  • Spring Data - 用於處理資料庫,
  • Flyway - 用於處理資料庫遷移,
  • MySQL - 作為該專案的資料庫,
  • Telegrambot StringBoot starter - 一個用於電報機器人的函式庫,
  • Unirest 是一個用於處理 REST 請求的函式庫。
從以上所有內容開始,讓我們開始建立任務。

任務創建模板

我們將使用以下範本建立任務:
  1. 任務名稱將如下所示:JRTB-{IssueNumber}:{IssueDescription},其中:
    • {IssueNumber} 是問題的序號。讓我們再看一下上一個問題;
    • {IssueDescription} - 問題的簡要描述。
  2. 在任務正文中我們會對它做更詳細的描述(有時可能與任務名稱中的描述一致)。
  3. 驗收標準是一系列要求,滿足該要求後即可認為任務已完成。可以說,接受任務的標準。使用它們,審閱者(來自英語審閱者 - 審閱者 - 負責查看任務完成情況的人)可以了解任務是否完全完成。
使用這個模板,我們將創建我們的第一個任務:Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 7還值得注意的是,在創建它時,我立即確定了這個任務適合哪個項目,誰來執行它(受讓人)以及這個任務屬於哪個標籤(標籤)。接下來,我將簡單地顯示任務名稱以及簡短的描述和連結。他們都在這裡。我們將按照與此處所示的大致相同的順序執行任務:
  1. [功能] JRTB-0:建立 Skeleton Spring boot 專案- 這裡一切都很清楚:您需要執行我們在上一篇文章中所做的第一部分。
  2. [功能] JRTB-2:將電報機器人添加到專案中- 添加一個空機器人,該機器人將簡單地響應並表示它還活著並且運作良好。
  3. [功能] JRTB-3:為 telegrambot 實作指令模式- 讓我們設定在 telegram bot 中使用指令的正確方法。到目前為止,有幾支球隊。
  4. [功能] JRTB-1:新增儲存庫層- 這是最大的任務之一 - 它結合了使用資料庫所需完成的所有操作。
  5. [功能] JRTB-5:作為用戶,我想將群組添加到訂閱中- 這已經是敏捷理解中的第一個用戶故事。這對我們的用戶來說將是一個真正的好處:可以為機器人添加群組訂閱。
  6. [功能] JRTB-12:實現發送有關新文章的通知的調度- 如果新文章為每個組發布並發送給訂閱該組的所有用戶,這裡將實現搜索新文章。
  7. [功能] JRTB-6:作為用戶,我想查看我的群組訂閱清單- 這裡一切都很簡單:我們添加一個命令來顯示用戶訂閱的所有群組的清單。
  8. [功能] JRTB-7:作為用戶,我想從我的訂閱中刪除群組訂閱- 此處您需要刪除用戶對群組中更新的訂閱。
  9. [功能] JRTB-8:作為用戶,我想使用機器人將其設定為非活動狀態- 實施停止機器人。也就是說,我們的系統中需要完成的所有操作才能停止工作。將 /stop 指令加入處理中。
  10. [功能] JRTB-9:作為用戶,我想開始使用機器人,或者如果我之前使用過機器人,則將其設定為活動狀態- 新增 /start 命令的處理。正是我們想要的方式。
  11. [功能] JRTB-10:作為管理員,我想查看機器人統計數據- 創建機器人統計數據集合。新增管理員功能。
  12. [功能] JRTB-11:作為用戶,我想查看此電報機器人的文檔- 編寫文檔。是的,是的,朋友們,沒有它你就活不下去,你越早學會這樣做,對你來說就越好))
這看起來已經像是專案的開始了。可以說,我們擔任專案架構師和業務分析師。

填寫儲存庫

在開始編碼之前還需要做什麼? - 作者,你能加上多少這樣的段落,你把它們從深淵中拉出來了嗎?——不,工作的好壞是從細節中體現出來的。它們是有意義的。 讓我們再增加一個細節。為了使該專案變得流行並被其他開發人員理解,需要填寫它。我應該添加什麼?我在文章優化 GitHub 上的專案工作:了解 Github 範本儲存庫 中描述了可以執行的操作的完整清單。我強烈推薦閱讀它。對我們來說,擁有清晰的版本控制、清楚地了解我們正在做的事情非常重要。因此,我新增了一個 RELEASE_NOTES 文件,其中將記錄對專案的變更。作為一個例子,您可以查看我的專案中的 RELEASE_NOTES(是的,為什麼不展示我投入的精力和創造力)。其中描述了每個新版本的變更。我還添加了用於創建新任務的模板,其中有 4 個選項:
  • 錯誤報告是由在工作中發現錯誤的使用者/測試人員所建立的任務。這是一件非常重要的事情:它有助於管理錯誤修復;
  • 功能請求是新增功能的任務。專案中的所有首要任務都是功能請求任務;
  • 改進請求- 改進應用程式操作的任務。例如,在使用機器人時更改測試答案。我不是技術作家,我不能給出完全正確的答案。所以如果你有這個願望和能力,就提供吧:)
  • Question是向開發者詢問有關應用程式操作的問題。非常有用的東西。假設對作品不了解或對某個問題有疑問——你可以透過這種方式提出問題並得到第一手答案。
如果您查看 GitHub,它看起來就像這樣:Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 8我們目前還有一份有關使用 JavaRush API 來與群組合作的文件。

下一步是什麼?

好吧,我們完成了所有這些步驟,然後呢,該專案將關閉?一點都不。這個項目將繼續存在。它將由我和所有想要參加的 JavaRush 學生/畢業生共同開發。你未來的計劃是什麼?很多。第一個計畫是為 JavaRush API 建立一個 Java 用戶端。開發人員承諾開放他們的 Swagger。我們還將看看什麼是招搖。很酷而且非常有用的東西。接下來,我們將 JavaRush 網站與 telegram 機器人整合。讓我們將用戶連接到機器人以同步訂閱。讓我們建立課程完成情況的統計資料。以及您作為 JavaRush 社群想要的一切。

結論

今天我們聊聊專案創建前的幕後工作。更準確地說,是關於如何制定工作計劃,否則你會浪費大量精力。我再說一遍,該專案的開始部分已經在這裡公開了。像往常一樣,我建議您訂閱我在 Github 上的帳戶。這樣您就可以在文章發布之前收到項目的變更。我已經假設所有有興趣的各方都已在 Github 上註冊。是的,該專案的進展速度沒有我們希望的那麼快。然而,就像工作中的真實項目一樣。在下一篇文章中,我將描述新增第一個任務。感謝大家的閱讀,很快再見!

此系列所有資料的清單位於本文開頭。

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION