In terms of writing, yes. In my opinion, he’s one of the most complicated characters that literature has ever seen. His inner conflict, his feelings, it’s all done beautifully, and I couldn’t have asked for a better-written character.
However, in terms of characteristics, NO. He switched over to the good side because the life of his lady love was threatened. Not because he realised racism was wrong. Not because he understood that it wasn’t right to kill and torture. Because. Of. Lily.
I’m willing to bet that if Lily was a half-blood, he would never have turned ‘good’.
Also, he tortured students FOR NO FRICKIN REASON. Voldemort never told him to, and he wasn’t under the Imperius spell. He. Did. It. For. His. Own. Pleasure.
Remember Neville Longbottom? Yeah, the kid who watched his parents getting tortured into insanity by Bellatrix Lestrange. But when he faced a boggart, what did he see? Not Bellatrix, not his insane parents, not himself meeting the same fate. He sees Snape, not Bellatrix. And that isn’t okay.
Final reason, did I mention that he was obsessed with Lily? Crushes don’t last TWENTY GODDAMN YEARS, maybe even more. Predictably, Lily would have ignored Snape after he called her a mudblood, but he kept loving her. Even after the Potters went into hiding, even after Lily was dead for 17 years, he still loved her. That’s not love, Snape was obsessed with an image of Lily so distorted that she probably didn’t even fit in it anymore.
Snape is the most complicated character but he is not the best character. The best character would have to be Harry because he fought Voldemort countless times, is humble and modest, has great morals despite his abuse, is generous, brave and loyal. What most Snape fans fail to remember is what Snape was like before it was revealed that he loved Lily; Snape called Hermione an ‘insufferable know-it-all’, called Lily, his best friend a ‘mudblood’, is a horrible teacher (JK even says this herself) and was cruel to Petunia.