快速启动|好处|为什么? |目标|项目状态|不和谐| 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]