Raycast obstacle avoidance, jitters and sometimes just runs around the player

EDIT
Ive got an avoidance script here that works but the only problem im having is that it always tries to look at the player even if its going around the obstacle causing it to jitter. I was wondering how i can make it only look at the player if the raycast is not hitting the obstacle but make it move towards the player at the same time. any help would be appreciated,

using UnityEngine;
using System.Collections;

public class enemyAI : MonoBehaviour
{   
    public Transform target;
    public float moveSpeed;
    public float rotationSpeed;
    public float minDistance = 0.5f;
    public static enemyAI enemyAIself; 
    RaycastHit hit;

    void Awake()
    {
       enemyAIself = this;   
    }
    void Start () 
    {
       GameObject goTo = GameObject.FindGameObjectWithTag("Player");
       target = goTo.transform;
    }

    void Update () 
    {
       Vector3 dir = (target.position - transform.position).normalized;
       if (Physics.Raycast(transform.position, transform.forward, out hit, 5.0f, (1<<8)))
       {
       Debug.DrawRay(transform.position, hit.point, Color.blue);
       dir += hit.normal  * 50;
       }

       Vector3 leftR = transform.position;
       Vector3 rightR = transform.position;

       leftR.x -= 2;
       rightR.x += 2;

       if (Physics.Raycast(leftR, transform.forward, out hit, 5.0f, (1<<8)))
       {
        Debug.DrawRay(leftR, hit.point, Color.blue);
          dir += hit.normal  * 50;
       }

       if (Physics.Raycast(rightR, transform.forward, 5.0f, (1<<8)))
       {
       Debug.DrawRay(rightR, hit.point, Color.blue);
       dir += hit.normal  * 50;

       } 
       Quaternion rot = Quaternion.LookRotation(dir);
       transform.rotation = Quaternion.Slerp(transform.rotation, rot, rotationSpeed * Time.deltaTime);

       if (Vector3.SqrMagnitude(target.position - transform.position)> (minDistance *  minDistance))
       {
         //move towards the target
         transform.position += transform.forward * moveSpeed * Time.deltaTime;
       }

    }


}

Not sure if this is the exact reason since I haven’t tested your code, but I did notice that the raycast from rightR is missing the ‘out hit’. If the center raycast or the left raycast didn’t hit anything then your dir variable would be pointing at the target, which in turn would cause your player to rotate towards the target.