快速啟動|好處|為什麼? |目標|項目狀態|不和諧| Github討論| github問題|貢獻
Bitloops語言(BL)是一種高生產率,域特定的語言(DSL),可幫助您專注於應用程序的業務邏輯,這確實重要。
它結合了軟件開發的最佳實踐和設計方法,例如DDD,BDD和分層/六邊形體系結構。
Bitloops語言指南並授權任何軟件開發人員編寫乾淨的代碼並構建高質量&設計精良的軟件。這與具有復雜且經常改變業務需求的服務器應用程序軟件特別相關。使用BL,開發人員可以使用諸如關注點,寬鬆的耦合,高凝聚力和命令查詢責任隔離(CQR)等原則來構建軟件,從而確保系統易於理解,維護和更改。
使用Bitloops語言,開發人員可以:
從本質上講,軟件開發人員可以專注於最擅長的事情:解決問題!借助Bitloops語言開發人員編寫代碼,這將允許其他開發人員(甚至在6個月後)輕鬆理解和構建該代碼之上。
配x 請記住,Bitloops的語言處於早期階段,並且處於非常積極的發展。期望錯誤和限制。在達到v1.0.0之前,不能保證任何向後兼容性。
了解Bitloops語言如何幫助您編寫乾淨代碼和出色軟件的最佳和最快的方法是遵循以下說明。借助本教程,您將運行並執行Bitloops TODO應用程序,了解Bitloops的工作原理,並在Typescript中查看輸出文件,並欣賞Bitloops語言的工作原理。
如果您遇到任何問題(尤其是Windows),請檢查下面的常見問題部分。
Bitloops仍然沒有創建二進製文件,因此安裝和運行轉板器的最佳方法是將Bitloops語言CLI作為全局NPM軟件包安裝。複製以下內容並在您的IDE中運行:
npm install -g @bitloops/bitloops-language-cli另外,您可以使用紗線:
yarn global add @bitloops/bitloops-language-cliBitloops TODO應用程序很容易克隆。您可以在鏈接之後提取文件,也可以使用以下命令來克隆它:
git clone https://github.com/bitloops/bitloops-language.git下一步是將TODO應用程序代碼從Bitloops語言代碼轉換為打字稿代碼。 transpile來自“ transempile”一詞,是指代碼從一種編程語言轉換為另一種編程語言。
MacOS / Linux
bl transpile -s bitloops-language/examples/todo/bl-source/ -t output視窗
bl transpile -s bitloops-languageexamplestodobl-source -t output或者
bitloops-language transpile就是這樣!現在,您可以運行以下內容,以查看您保存了多少行代碼(擾流板警報:77%或2141 LOC!)
bl analyze-lines -bl bitloops-languageexamplestodobl-source -ts ./output好的,現在您將所有業務邏輯都精美地傳輸到結構良好的打字稿代碼中? ? ?
Bitloops語言的範圍在這裡結束,但是使用Bitloops您可以使用Bitloops Magic和AI自動生成其他所有內容! Bitloops將為您生成一個Nest.js項目和所有必需的基礎架構(GRPC或REST控制器,PostgreSQL或Mongo等的存儲庫適配器)以及Docker或K8S文件以部署您的系統。要了解有關自動Bitloops流程的更多信息[單擊此處]。
另外,您可以自由使用您喜歡的任何框架或僅使用Express Server或Fastify Server等。
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned那裡有許多出色的編程語言,具有大量和不斷增長的代碼庫和投資。但是,建立和維護系統的組織面臨的最常見問題是開發人員的團隊,是互連服務系統的良好體系結構和設計。
設計一個複雜的系統,以便它可以持續時間,並使開發人員(現有和新的木匠)能夠以穩定(或希望)提高的生產率在其代碼庫上工作。
良好的測試是持久產品的另一個主要要求,這也是通過良好的建築和設計使得能夠實現的。不幸的是,世界各地沒有足夠的知識淵博和經驗豐富的高級工程師來為所有需要它們的人建立和維護出色的系統。即使一家公司很幸運能擁有一些公司,也無法聘請高級工程師更多的初級工程師可以審查其工作和指南,以確保由於不良的設計決策而導致系統不會隨著時間的推移而降級。
Bitloops語言是第一種旨在通過採用重要的軟件工程原理和模式(例如以域驅動的設計和行為驅動的開發)來解決這些問題的第一種編程語言,而無需多年的經驗才能成功地做到這一點。結果,可以進一步利用高級工程師的工作,而初級工程師的貢獻大大提高了。
每個軟件工程師都有一個共同的目標:我們想編寫更好的代碼並構建更好的軟件,我們想更快地做到這一點!
但是,這只能通過重要,持續的奉獻精神,學習和經驗來實現,這需要大量時間。 Bitloops希望大大減少開發人員開始構建高質量軟件所需的時間,並且我們已經構建了Bitloops語言,該語言已經結合了許多軟件開發最佳實踐和設計方法。
最終,BL的目標是:
Bitloops語言旨在定義和保留一種簡單的語法,該語法將盡可能接近人類的語言和商業邏輯,這些語言和商業邏輯將變得永恆,從而幫助在每個模塊或有限上下文中採用和使用無處不在的語言。然後將BL的工作轉換為目標語言的現代和最新語法。
使Bitloops語言成為跨語言是實現這一目標的核心決定。通過允許Oraganations用永恆的語言編寫其業務邏輯,該語言可以轉換為強大但也可以改變目標語言,而不會為Bitloops語言的用戶負擔此任務。 Bitloops語言將確保其轉移到優化的相關,最新和正確任務的代碼。
Bitloops語言目前處於早期階段。它的轉材是作為概念證明而創建的,並不旨在涵蓋此階段的全部開發人員創意代碼寫作。
我們希望更好地理解我們是否可以建立一種滿足您需求的語言,以及我們是否可以在DDD社區和之外收集一大堆興趣。
我們將來有很多東西要添加,包括
如果您有興趣做出貢獻,我們會很喜歡您的幫助!
如果您已經知道DDD概念(聚合,值對象,用例,控制器等),並且知道如何使用任何現代編程語言進行編碼,那麼拿起Bitloops語言應該非常容易。它是由一套一致的語言構造構建的,這些語言結構應該會感到熟悉並易於閱讀和理解。
儘管Bitloops是一種面向對象的語言,但它沒有通用類。特定的Bitloops類的組成如下:ValueObject,實體,根實體,命令,命令手,查詢,QueryHandler,dto,props,props,ok,applicationerror,domainError,domainerror,錯誤等。
Bitloops語言代碼(11行):
// Bitloops Language:
Rule TitleOutOfBoundsRule ( title : string ) throws DomainErrors . TitleOutOfBoundsError {
isBrokenIf ( title . length > 150 OR title . length < 4 ) ;
}
Props TitleProps {
string title ;
}
ValueObject TitleVO {
constructor ( props : TitleProps ) : ( OK ( TitleVO ) , Errors ( DomainErrors . TitleOutOfBoundsError ) ) {
applyRules ( TitleOutOfBoundsRule ( props . title ) ) ;
}
}轉到此打字稿代碼(28行):
// TypeScript:
import { Domain , Either , ok , fail } from '@bitloops/bl-boilerplate-core' ;
import { DomainErrors } from './errors' ;
export class TitleOutOfBoundsRule implements Domain . IRule {
constructor ( private title : string ) { }
public Error = new DomainErrors . TitleOutOfBounds ( this . title ) ;
public isBrokenIf ( ) : boolean {
return this . title . length > 150 || this . title . length < 4 ;
}
}
export namespace Rules {
export class TitleOutOfBounds extends TitleOutOfBoundsRule { }
}
interface TitleProps {
title: string ;
}
export class TitleVO extends Domain . ValueObject < TitleProps > {
get title ( ) : string {
return this . props . title ;
}
private constructor ( props : TitleProps ) {
super ( props ) ;
}
public static create ( props : TitleProps ) : Either < TitleVO , DomainErrors . TitleOutOfBounds > {
const res = Domain . applyRules ( [ new Rules . TitleOutOfBounds ( props . title ) ] ) ;
if ( res ) return fail ( res ) ;
return ok ( new TitleVO ( props ) ) ;
}
} 有關問題和支持,請使用我們的官方不和諧頻道。如果您想了解有關軟件開發設計模式的更多信息,請隨時加入。
我們是一支旨在使精心設計的代碼和高質量軟件民主化的使命團隊,我們將獲得所有幫助!如果您想參與其中,請查看我們的貢獻指南,以了解如何以及在哪裡使用您的幫助。我們旨在確定良好的問題,以便您可以快速開始貢獻和學習。
在開發問題之前,請確保閱讀我們的報告問題指南。不符合準則的問題可能會立即關閉。
有關使用Bitloops語言的一般幫助,請使用以下渠道之一:
Bitloops語言具有GNU通用公共許可證v3.0。有關許可信息,請參見許可證文件。
Bitloops一直在尋找偉大的人來為Bitloops的語言和平台做出貢獻。如果您熱衷於加入一個希望從根本上改善軟件構建方式的團隊,請將您的簡歷 +求職信(非常重要) + GitHub個人資料發送到:[email protected]