ARTS Week 4
每周完成一个ARTS:
1.Algorithm:每周至少做一个 leetcode 的算法题
2.Review:阅读并点评至少一篇英文技术文章
3.Tip:学习至少一个技术技巧
4.Share:分享一篇有观点和思考的技术文章
Algorithm
class Solution {
public:
string longestPalindrome(string s) {
if(s.empty())
{
return "";
}
int size = s.size();
int start = 0,end = 0;
for(int i = 0;i<size;i++){
int len1 = calMaxLength(s,i,i);
int len2 = calMaxLength(s,i,i+1);
int len = len1>len2?len1:len2;
cout<<len1<<" "<<len2<<" "<<len<<endl;
if(len > (end - start)){
start = i - (len -1)/2;
end = i + len/2;
}
}
return s.substr(start,end - start +1);
}
int calMaxLength(string s,int left,int right)
{
int size = s.size();
while(left>=0 && right < size && (s[left] == s[right]))
{
left --;
right++;
}
return right - left -1;
}
};
Review
How to avoid these 7 mistakes I made as a Junior Developer
本周Review一篇Medium上一篇关于初级开发者避免犯错的文章。
- 对于寻找第一份工作,第一份工作是你成长最快的时候,一定不能草率了事。
- 仔细研究公司背景
- 咨询在公司工作的员工
- 在面试中提出正确的问题
- 不要把自己限制在一条发展路线上
- 不要在写代码时过于花哨,记住KISS原则。
- 生活中不只有代码和工作
- 勇于承认“我不知道”
- 不要试图把进度推进太快,不会走先别想跑
- 参与开源社区和平台交流
Tips
注释(代码整洁之道)
- 不要给不好的名字加注释,一个好的名字比好的注释更重要
- 不要“拐杖注释”,好代码 > 坏代码 + 好注释
- 在文件/类级别使用全局注释来解释所有部分如何工作
- 一定要给常量加注释
- 团队统一定义标记
- TODO 待处理的问题
- FIXME 已知有问题的代码
- HACK 不得不采用的粗糙的解决方案
- 在注释中用精心挑选的输入输出例子进行说明
- 注释应该声明代码的高层次意图,而非明显的细节
- 公共API需要添加注释,其他代码谨慎使用注释。
- 典型的烂注释
- 不恰当的信息
- 废弃的注释
- 冗余注释
- 糟糕的注释
- 注释掉的代码
- 唯一真正好的注释是你想办法不去写的注释
- 不要有循规式注释,比如setter/getter注释
- 不要添加日志式注释,如修改时间等信息(git可以做的事)
- 注释一定是表达代码之外的东西,代码可以包含的内容,注释中一定不要出现
- 如果有必要注释,请注释意图(why),而不要去注释实现(how),大家都会看代码
- 适当添加警示注释
Share
本周Share一篇曹大的从校园到职场-什么是职场经验