# 2024/06/24 工作日志

本次主要整理了代码的风格，并且发布了2.4.5。

### 修复了部分问题

将析构的函数也定义为虚函数，防止了可能的内存泄露。

### 格式化代码

本建议来自于[一个issue](https://github.com/CLimber-Rong/stamon/issues/1)。

感谢其提议，我对代码的风格进行了如下调整：

1. 将嵌套的namespace整合成一个namespace

例如：

```C++
namespace stamon {
    namespace ast {
        ...
    }
}
```

在整合之后成为：

```C++
namespace stamon::ast {
    ...
}
```

这么做可以节约代码的缩进空间。

2. 在 namespace 的末尾加上注释

例如：

```C++
namespace stamon {
} // namespace stamon
```

3. 不在头文件中且在上层namespace中using下层namespace
   
即不再使用``using namespace stamon:xxx;``，而是在访问成员时使用``xxx::xxxxx``。

4. 将一些能放入namespace的常量值放入了namespace里

5. 不要用 #ifndef #define 来防止头文件被重复包含，而是使用#pragma once

与此同时，我对未来的代码编写做出了一些改变：

1. 将宏用 do {} while(0) 包裹，同时在调用宏的时候在末尾加上分号

2. 将一些能封装为函数的宏封装为函数

3. 加入了我喜欢的.clang-format，以后的代码可能都使用其进行格式化

### 接下来要做的事

1. 编写AST的解释器
2. 编写词法分析的保存功能
3. 编写AST的O1优化器
4. 完善标准库
5. 支持编译为平面字节码
