老專案重構手記之使用者系統

2021-09-13 15:46:49 字數 3097 閱讀 8295

受邀來一起重構公司的老專案
重構首先要注意幾個點

以上幾點是重構注意的地方也是重構的目的

本次重構的專案運營了三年之久,使用者及業務量也上不來。至於重構的真正原因不清楚。

非常的慘淡

前期設計上貌似介面及資料表字段設定問題,出現了資料重複的問題。

功能重新寫好後,在資料遷移方便,當然沒法人工操作,php指令碼去遷移也不現實,考慮使用資料佇列等等方式進行資料遷移

功能**絕筆是另起爐灶寫,在原程式上寫複雜度有提公升了一倍。

部分字段
欄位名

型別是否為空

預設值注釋

memberid

bigint(20)

y自增編碼

memberphone

varchar(255)n''

手機號碼

logintime

int(11)

ynull

登入時間

quittime

int(11)

ynull

退出時間

loginstate

tinyint(2)

ynull

登入狀態

memberstate

tinyint(2)n0

賬號狀態

memberexpert

tinyint(2)n0

memberregtime

int(11)

ynull

註冊時間

devicetoken

varchar(255)

ynull

裝置標示

wxtoken

char(32)

ynull

問題點有以下幾個

資料字段設計時不應使用駝峰命名,應使用小寫,單獨分割用_ ,例如 member_tel , 索引的設定也存在一些問題

字段盡量避免default null

根據需求分表,現在所有的第三方授權都放到乙個表裡了

前期重構要求速度要快。所以只能選擇世界上最好的語言。

考慮到資料量也不小,手動操作是不可能了,選擇使用rabbitmq進行資料遷移
create table `member` (

`id` bigint(20) unsigned not null auto_increment,

`tel` bigint(20) default null comment '手機號碼',

`password` varchar(255) collate utf8mb4_unicode_ci default null comment '登入密碼',

`status` tinyint(4) not null default '0' comment '賬號狀態 0:正常',

`created_at` timestamp null default null,

`updated_at` timestamp null default null,

primary key (`id`),

unique key `member_tel_unique` (`tel`),

key `member_tel_status_index` (`tel`,`status`)

) engine=innodb auto_increment=80073 default charset=utf8mb4 collate=utf8mb4_unicode_ci;

create table `member_authorized` (

`id` int(10) unsigned not null auto_increment,

`member_id` bigint(20) not null comment '使用者編碼',

`prefix` varchar(25) collate utf8mb4_unicode_ci not null comment '第三方名稱',

`token` varchar(255) collate utf8mb4_unicode_ci not null comment '第三方標示',

`data` text collate utf8mb4_unicode_ci not null comment '授權獲得的使用者資訊',

`created_at` timestamp null default null,

`updated_at` timestamp null default null,

primary key (`id`),

key `member_authorized_prefix_index` (`prefix`)

) engine=innodb default charset=utf8mb4 collate=utf8mb4_unicode_ci;

create table `member_data` (

`member_id` bigint(20) not null comment '使用者編碼',

`***` enum('0','1','2') collate utf8mb4_unicode_ci not null comment '性別 0=>女生 1=>男生 2=>未知',

`nick_name` varchar(255) collate utf8mb4_unicode_ci not null comment '姓名/暱稱',

`img` varchar(255) collate utf8mb4_unicode_ci not null comment '使用者頭像',

`created_at` timestamp null default null,

`updated_at` timestamp null default null,

unique key `member_data_member_id_unique` (`member_id`)

) engine=innodb default charset=utf8mb4 collate=utf8mb4_unicode_ci;

重構並不是一言一語,幾行**或者乙個大佬的方案就可以解決的。實際重構也是乙個開發的過程。在不斷的迭代中,將重構完成的部分補回到業務中。

機房收費系統之使用者登入

機房敲了乙個半月了,之前總是一直修改,需要好好的總結一下,首先是登陸窗體。登陸窗體 問題及重點 1.問題1實時錯誤 3704 物件關閉時,不允許操作 出現這個問題是因為前面寫了 mrc.close導致後面mrc1呼叫mrc資料集裡面的內容時無法呼叫。trim函式用來刪除乙個字串的字頭或字尾,刪除字串...

vue ssr方案重構老專案 解決SEO的調研

一 node框架選型 框架對比參考 1.hapi 大型複雜專案 2.express node 成熟框架 3.koa node 新型框架 做 ssr 不要用 koa 客戶端熱過載有坑 純後端專案用 koa 4.egg 阿里開發 企業級別 應用不多 我們已經看了三個框架還算不錯具有代表性的一些樣例 ex...

Linux作業系統之使用者管理

使用者 組 建立各個分組用於分類使用者 使用者家目錄 home 該目錄下有各個建立的使用者對應的家目錄,當使用者登入時,會自動進入到自己的家目錄 如 home xx home 說明 1 linux系統是乙個多使用者多工的作業系統,任何乙個要使用系統資源的使用者,都必須首先向系統管理員申請乙個賬號,然...